Intentionally inserting duplicates without aborting
От | disser@sdd.hp.com |
---|---|
Тема | Intentionally inserting duplicates without aborting |
Дата | |
Msg-id | u907h9eij.fsf@sdd.hp.com обсуждение исходный текст |
Ответы |
Re: [SQL] Intentionally inserting duplicates without aborting
|
Список | pgsql-sql |
I'm fairly new to SQL, so please bear with me. I'm writing an application in which I represent an item in a table, and I would also like a history table in which I represent the item as it exists on various dates. The item's primary key is an integer. I have represented the history table with a compound key of the item's primary key and a column indicating the state of that item. Eg. create table item (item_id integer primary key,state varchar(8) ); create table item_hist (item_id integer primary key,state varchar(8),date date, primary key (item_id, state) ); It happens that I have to query another application for the status of these items, and it is vastly more efficient to get the status of all the items than it is to query for each individually. What I would like to do (and have manage to kludge together in Perl DBI) is to attempt to insert (item_id, state, today's date) into item_hist, and in the cases where that item/state combo exists already, the insert will fail. However, if I am using {AutoCommit => 0}, the whole transaction bombs, so I can only get away with this if I'm AutoCommit'ing. Any thoughts on how I can do this with AutoCommit => 0? I would rather not have to look up all the status rows to figure out if an error will occur. --Dave
В списке pgsql-sql по дате отправления: