Mam tabelę o nazwie nagrody. Jak zamontować Trigger w PostgreSQL, gdzie każda wstawka w tabeli nagradza inną tabelę?Wstaw wyzwalacz, aby zaktualizować inną tabelę, używając PostgreSQL
Odpowiedz
Chcesz documenation for PL/PgSQL triggers, który omawia właśnie ten przypadek między innymi. Ogólny numer documentation on triggers również może być przydatny.
Można użyć do tego wyzwalacza BEFORE
lub AFTER
. Prawdopodobnie użyłbym spustu AFTER
, więc mój spust zobaczył ostateczną wersję wstawianego wiersza. Oczywiście, chcesz mieć FOR EACH ROW
.
Hej @Craig Ringer jest celem FOR EACH ROW dla insertów wsadowych? – rosenthal
@rosenthal Huh? Wyzwalacze "DLA KAŻDEGO STATYSTYKA" nie mają dostępu do wiersza 'NEW'. Więc nawet gdybyś robił pojedynczy wiersz 'INSERT', nie byłby do tego użyteczny. –
Nie miałem na myśli tego, przepraszam za mój zły wybór w słowach. Mam na myśli to, co robią FOR EACH ROW? Spojrzałem na dokumentację Postgres i teraz to rozumiem. "Wyzwalacz oznaczony DLA KAŻDEGO WIERSZA jest wywoływany raz dla każdego wiersza, który modyfikuje operacja." – rosenthal
Kliknij poniższy link, aby uzyskać odpowiedź.
http://www.postgresql.org/docs/9.4/static/plpgsql-trigger.html
Tutaj mamy dwie tabele nazwanych table1
i table2
. Za pomocą spustu zaktualizuję table2
po wstawieniu do table1
.
Tworzenie tabel
CREATE TABLE table1
(
id integer NOT NULL,
name character varying,
CONSTRAINT table1_pkey PRIMARY KEY (id)
)
CREATE TABLE table2
(
id integer NOT NULL,
name character varying
)
Funkcja wyzwalania
CREATE OR REPLACE FUNCTION function_copy() RETURNS TRIGGER AS
$BODY$
BEGIN
INSERT INTO
table2(id,name)
VALUES(new.id,new.name);
RETURN new;
END;
$BODY$
language plpgsql;
Trigger
CREATE TRIGGER trig_copy
AFTER INSERT ON table1
FOR EACH ROW
EXECUTE PROCEDURE function_copy();
W wyzwalaczu Funkcja, jak wie, wstawić wartości z pierwszej tabeli? Czy nie musimy pisać "z tabeli 1" po "wartościach (new.id, new.name)"? –
- 1. Wyzwalacz PostgreSQL do ustawiania wartości
- 2. Wyzwalacz MySQL przed Wstaw wartość Sprawdzanie
- 3. Wyzwalacz PostgreSQL nie zwracający niczego
- 4. wstaw używając wybierz różne
- 5. WSTAW NA tabelę z wielu tabel
- 6. Kątowy, używając filtra wejściowego wybierz, aby zaktualizować trasę?
- 7. Android Room: Wstaw obiekty relacji używając Room
- 8. PostgreSQL - zrzuć każdą tabelę do innego pliku
- 9. zaktualizować tabelę SQL poprzez R sqlSave
- 10. Wstaw używając PreparedStatement. Jak automatycznie zwiększyć identyfikator?
- 11. Wstaw zmienną używając sys.stdout.write w Pythonie
- 12. Utwórz tabelę w oknie dokowanym PostgreSQL
- 13. Jak wdrożyć tabelę czasową używając WZP?
- 14. Czy mogę zaktualizować Nowy w przed wstawić wyzwalacz w sqlite?
- 15. Klucze obce w postgresql mogą zostać naruszone przez wyzwalacz
- 16. Stwórz tabelę HTML używając YII Framework
- 17. Wyzwalacz SQL Server - Wstaw usunięty rekord do innej tabeli z czasem wykonania
- 18. Wstaw tabelę do dokumentu google w pozycji kursora
- 19. stanie zaktualizować istniejącą listę json używając jsonconverter
- 20. Jak zaktualizować GUI z wątku używając Delphi
- 21. Zapytanie, aby sprawdzić, czy wyzwalacz istnieje w tabeli MYSQL
- 22. Oracle: wstaw bez kolumny specyfikacja
- 23. Jak utworzyć wyzwalacz dla wszystkich tabel w postgresql?
- 24. czy można utworzyć wyzwalacz bez procedury wykonywania w postgresql?
- 25. Jak upuść wyzwalacz w sprężysty sposób w PostgreSQL
- 26. Jak rozpoznać, czy wyzwalacz jest włączony w PostgreSQL?
- 27. Wstaw tabelę liczb całkowitych - int [] - do bazy danych SQLite,
- 28. Czy to możliwe, aby przyłączyć się do funkcji tabeli wyceniane i inną tabelę z parametrami
- 29. SQL, aby wielokrotnie połączyć jedną tabelę z inną tabelą? (Mapowanie produktów do kategorii)
- 30. VBScript, aby połączyć się z SQL Server 2005 i zaktualizować tabelę
mógłbyś podać kilka mor e szczegóły? Czy ta "inna tabela" jest pojedynczą, oddzielną tabelą lub wieloma tabelami opartymi na wartości niektórych pól w nagrodach. – jcater
http://www.postgresql.org/docs/8.1/static/triggers.html – ertx
@ertx Lepiej połączyć z/current/doc zamiast/8.1/doc, to jest * bardzo * nieaktualne. –