On 10/22/13 8:44 PM, Bob M wrote:
Hi there

The error is that my SELECT can not have "For UPDATE" ????

My current code is
***************************
// retrieve and output date and time of oldest record from the table
rs = s.executeQuery("SELECT * FROM tablename ORDER BY Date ASC, Time ASC
FETCH FIRST ROW ONLY");
rs.next();
String Date2 = rs.getString("Date");
String Time2 = rs.getString("Time");

myConsole.getOut().println("Date/Time: " + Date2 + ", " + Time2);

// and now delete this record.............
s.setCursorName("MYCURSOR");
rs = s.executeQuery("SELECT * FROM tablename ORDER BY Date ASC, Time ASC
FETCH FIRST ROW ONLY FOR UPDATE");
rs.next();

psDelete = conn.prepareStatement("DELETE FROM tablename WHERE CURRENT OF
MYCURSOR");
statements.add(psDelete);

myConsole.getOut().println("Deleted oldest record");



--
View this message in context: 
http://apache-database.10148.n7.nabble.com/deleting-a-record-still-a-problem-tp134975.html
Sent from the Apache Derby Users mailing list archive at Nabble.com.

Hi Bob,

Another way to solve this problem would be to add a unique key column to your table and use that to specify which row should be deleted. The following script shows how this would work.

Hope this helps,
-Rick

-----------------

connect 'jdbc:derby:memory:db;create=true';

-- create a little procedure to pause between inserts
create procedure sleep( millis bigint )
language java parameter style java no sql
external name 'java.lang.Thread.sleep';

create table t( id int generated always as identity, dateCol date, timeCol time );

insert into t( dateCol, timeCol ) values ( current date, current time );
call sleep( 1000 );
insert into t( dateCol, timeCol ) values ( current date, current time );
call sleep( 1000 );
insert into t( dateCol, timeCol ) values ( current date, current time );

select * from t order by dateCol, timeCol;

select id from t order by dateCol, timeCol fetch first 1 row only;

delete from t where id =
( select id from t order by dateCol, timeCol fetch first 1 row only );

select * from t order by dateCol, timeCol;

Reply via email to