Re: Table Merge Successful, Primary Keys Missing
От | |
---|---|
Тема | Re: Table Merge Successful, Primary Keys Missing |
Дата | |
Msg-id | 20060626222034.22988.qmail@web33312.mail.mud.yahoo.com обсуждение исходный текст |
Ответ на | Re: Table Merge Successful, Primary Keys Missing (Richard Broersma Jr <rabroersma@yahoo.com>) |
Ответы |
Re: Table Merge Successful, Primary Keys Missing
|
Список | pgsql-novice |
> > > select * > > > into t_temp_final > > > from t_temp_output > > > union > > > SELECT * FROM t_product > > > ; > > the current t_product table entries have > product_id > > values. the temp table doesn't. so i need to add > > product_ids wher where product_id IS NULL. > > > > if i knew how to create a serial field (and > control > > its values to start at a level greater than the > > highest t_product product_id value) in an insert > into > > temp table, i could create product_ids when i > create > > the insert into temp table and then merge > everything > > together - complete with product_ids in place. > > When you define a column to use a serial, you are > really just using a nifty short-cut. > What actually happens, (and you could manually do > all of this by hand) is: > > 1st. a sequence is created (it is just a "kind" of > storage are that keeps track of the last > number used. in your case, it is the last number use > as a primary key.) your automated sequence > is name something like "a_id_sequence" > > 2nd. your create table statement would actuall be > read as: > create table a ( id integer default > nextval(a_id_sequence) primary key). > > http://www.postgresql.org/docs/8.1/interactive/datatype.html#DATATYPE-SERIAL > notice section 8.1.4 > > so, long story short. you can directly call the > nextval() of the sequence with you insert your > temp table. > > > select nextval(what_ever_your_sequence_name_is), > colA, colB, colC, ... > into t_temp_final > from t_temp_output > union > SELECT * FROM t_product > ; > > just be sure that the column name maps to the > correct destination columns. Richard, thanks for the input. when i follow that syntax, i get an error b/c the sql considers "nextval" to be a column and so the number of columns no longer match and i get an error. also, when i try this... select nextval(product_id), * from t_temp_output the column for nextval has no values. if i try... select nextval(t_temp_output_product_id_seq), * from t_temp_output ; i get the following error: ERROR: column "t_product_product_id_seq" does not exist __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
В списке pgsql-novice по дате отправления: