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

Odpowiedz Nowy wątek
2006-10-04 11:44
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ć?

Pozostało 580 znaków

2006-10-04 13:13
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

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-10-04 14:01
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?

Pozostało 580 znaków

2006-10-04 14:46
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[...]sep-1-2005/inside-savepoints/ do poczytania


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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