On Wednesday 26 October 2005 17:11, Nicolas Dufour wrote: > Ahh perhaps i didnt explain very well my problem : > > I have an error with this query : > insert into foo (id, name, date, remark) select 1234, 'a_text', null, > remark from foo where id = 1234; > And right here derby is not happy by the null value. > Ok, this really doesn't make sense. First, lets format your statement a little better... INSERT INTO foo (id, name, date, remark) SELECT 124, 'a_text', null, remark FROM foo WHERE id = 1234;
Again, what is it that you're trying to do? Copy the row? Did you mean this? : INSERT INTO foo (id, name, date, remark) SELECT id, name, date, remark FROM foo WHERE id=1234; Now if date is NULL, then it will insert a null value in your new row. Note that if id is set as a unique or identity column this query will fail since the id already exists in the table. > The same if a do this : > select 'test', null from foo; > > Because i have a table where the date can be null. > > better like that ? > > Nicolas > Again in your second test, are you trying to select only those rows where the date is null? Sorry but I guess I'm missing something... Going back to your original statement: Try: INSERT INTO foo SELECT * FROM foo WHERE id = ?; This should work. HTH -G > Rajesh Kartha wrote: > > Nicolas Dufour wrote: > >> Hi > >> > >> I m trying to do a pretty simple insert : > >> > >> insert into foo (fields ........) select value1, value2, ...., > >> field3, field5 from foo where id = x > >> > >> Everything work until when a value is equal to NULL, i have this > >> message : > >> error: Encountered "null" at line .... > >> > >> Ok sql has seen a null well good for it ... but why its an error !? > >> > >> Thanks > >> > >> Nicolas Dufour > > > > Hi Nicolas, > > > > Is there any stack trace, SQLState etc. ? Can you shed some light on > > the table schema ? How many rows are you trying to insert ? > > > > Based on your mail I tried a very very simple example in ij: > > > > <sql> > > connect 'jdbc:derby:testdb;create=true'; > > drop table tab1; > > create table tab1 (id int, col1 char(1), col2 char(2), col3 char(3)); > > insert into tab1 values (1,'a','aa','aaa'); > > insert into tab1 values(2,'b','bb','bbb'); > > insert into tab1(id,col2,col3) values (3,'cc','ccc'); > > insert into tab1(id,col2,col3) values (4,'dd','ddd'); > > insert into tab1(id,col1,col2) values (5,'e','ee'); > > select * from tab1; > > insert into tab1(id, col1, col2, col3) select id, col1, col2, col3 > > from tab1; > > select * from tab1; > > </sql> > > > > it worked fine for me and the final select gives me: > > > > ID |COL1|COL2|COL3 > > -------------------------- > > 1 |a |aa |aaa > > 2 |b |bb |bbb > > 3 |NULL|cc |ccc > > 4 |NULL|dd |ddd > > 5 |e |ee |NULL > > 1 |a |aa |aaa > > 2 |b |bb |bbb > > 3 |NULL|cc |ccc > > 4 |NULL|dd |ddd > > 5 |e |ee |NULL > > > > 10 rows selected > > > > Correct me, is this similar to what you are trying to do ? Adding the > > where clause like yours also works fine. > > I am using Derby 10.1.1.0 - (225786). > > > > Regards, > > Rajesh -- Michael Segel Principal MSCC (312) 952-8175