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  (Herouth Maoz <herouth@oumail.openu.ac.il>)
Список 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 по дате отправления:

Предыдущее
От: "Frank Morton"
Дата:
Сообщение: Select Maximum Question
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [SQL] Select Maximum Question