[Firebird SQL] Wsadż rekord tylko jeśli go już tam nie ma

0

Cześć, natknąłem się na kolejny problem związny z SQL.
Otóż.

Mam plik tekstowy, w którym mam różne inserty do tej samej tabeli.

Np:

INSERT INTO SETS (VALUE_NAME, VAL) VALUES ('AUTO_NR_FAK', '1');
INSERT INTO SETS (DATA, VALUE_NAME, VAL) VALUES ('2006-08-25', 'FakUDID', '0');

Tabela oczywiście ma unikalne pole ID.

Teraz kwestia jest taka. Jak zrobić, że jeśli rekord o takim VALUE_NAME już jest, to, żeby nic nie robiło. Jeśli rekordu o takim VALUE_NAME nie ma, to wtedy ma zainsertować?

0
  1. założyć unikalny indeks
  2. napisać sobie procedurę, która najpierw zapyta o rekord i wstawi tylko jeśli go nie ma
0
Misiekd napisał(a)
  1. założyć unikalny indeks
  2. napisać sobie procedurę, która najpierw zapyta o rekord i wstawi tylko jeśli go nie ma

Rozumiem, że to do wyboru? :)
A może lepiej zamiast procedury, triggera before insert? Ale czy wtedy będę mógł anulować insert?

0

co do wyzwalacza to nie wiem czy się da anulować insert w wyzwalaczu
te dwa wyżej to do wyboru lub można je połączyć, tzn założyć indeks a w procedurze przechwytywać wyjątek http://ibdeveloper.com/issues/issue-1-sep-1-2005/inside-savepoints/ do poczytania

1 użytkowników online, w tym zalogowanych: 0, gości: 1