Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Triggery
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Pytanie niby proste, ale coś mi cały czas nie działa.
Mam takie tabelki
  1. CREATE TABLE `wizyta` (
  2. `ID_WIZ` int(9) NOT NULL AUTO_INCREMENT,
  3. `ID_PAC` int(9) UNSIGNED NOT NULL,
  4. `ID_LEK` int(3) DEFAULT NULL,
  5. `ID_BAD` int(3) DEFAULT NULL,
  6. `TERMIN` date DEFAULT NULL,
  7. `OBECNOŚĆ` enum('NIE','TAK') COLLATE utf8_polish_ci DEFAULT NULL,
  8. `NEW` timestamp NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  9. `UPDATE` time DEFAULT NULL,
  10. PRIMARY KEY (`ID_WIZ`),
  11. UNIQUE KEY `ID_WIZ` (`ID_WIZ`),
  12. KEY `PAC` (`ID_PAC`),
  13. KEY `BAD` (`ID_BAD`),
  14. KEY `LEK1` (`ID_LEK`),
  15. CONSTRAINT `BAD` FOREIGN KEY (`ID_BAD`) REFERENCES `badania` (`ID_BAD`),
  16. CONSTRAINT `LEK1` FOREIGN KEY (`ID_LEK`) REFERENCES `lekarze1` (`ID_LEK`),
  17. CONSTRAINT `PAC` FOREIGN KEY (`ID_PAC`) REFERENCES `pacjenci` (`ID_PAC`)
  18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

  1. CREATE TABLE `pacjenci` (
  2. `ID_PAC` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `PESEL` bigint(11) UNSIGNED DEFAULT NULL,
  4. `NAZWISKO` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  5. `IMIE` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  6. `MIASTO` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  7. `KOD` tinyint(5) UNSIGNED DEFAULT NULL,
  8. `ADRES` varchar(40) COLLATE utf8_polish_ci DEFAULT NULL,
  9. `TEL` int(9) UNSIGNED DEFAULT NULL,
  10. `TEL_KOM` int(9) UNSIGNED DEFAULT NULL,
  11. `ROK_UR` int(4) UNSIGNED DEFAULT NULL,
  12. `WIZYTA` date DEFAULT NULL,
  13. `PLEC` varchar(1) COLLATE utf8_polish_ci DEFAULT NULL,
  14. `ID_LEK` varchar(3) COLLATE utf8_polish_ci DEFAULT NULL,
  15. PRIMARY KEY (`ID_PAC`),
  16. UNIQUE KEY `ID_PAC` (`ID_PAC`)
  17. ) ENGINE=InnoDB AUTO_INCREMENT=214344 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

oraz triggera:
  1. DELIMITER ;;
  2. CREATE TRIGGER `wizyta2` BEFORE INSERT ON `wizyta` FOR EACH ROW begin
  3. INSERT INTO wizyta SET id_pac=new.pacjenci.ID_PAC;
  4. end;;
  5. DELIMITER ;

klucze obce w tab wizyta dotyczą innych tabeli. Do których też później chciałbym stworzyć triggera. Na razie chciałbym żeby po wstawieniu danych do tabeli pacjenci zapisywało się też ID_PAC do tabeli WIZYTA. Czy może ktoś sprawdzić gdzie mogę robić błąd?
Z góry dziękuję za pomoc.
darko
Cytat
Na razie chciałbym żeby po wstawieniu danych do tabeli pacjenci zapisywało się też ID_PAC do tabeli WIZYTA


tyle, że to:

  1. DELIMITER ;;
  2. CREATE TRIGGER `wizyta2` BEFORE INSERT ON `wizyta` FOR EACH ROW begin
  3. INSERT INTO wizyta SET id_pac=new.pacjenci.ID_PAC;
  4. end;;
  5. DELIMITER ;


tworzy wyzwalacz przed insertem do tabeli wizyta.

Może spróbuj tak:
  1. CREATE TRIGGER my_trigger AFTER INSERT ON pacjenci FOR EACH ROW begin
  2. INSERT INTO wizyta SET wizyta.ID_PAC=new.pacjenci.ID_PAC


Jeśli mieszam, to proszę upomnieć i z góry przepraszam.
jacusek
Dzięki. Pomogło. Ale co zrobić żeby można było wstawiać wartości z dwóch kolumn na raz do jednego wiersza w taki sposób:
  1. CREATE TRIGGER `wizyta2` BEFORE INSERT ON `wizyta` FOR EACH ROW beginbegin
  2. INSERT INTO wizyta SET ID_PAC=new.ID_PAC;
  3. INSERT INTO wizyta SET id_lek=new.id_lek;
  4. end

Może ktoś pomóc czy da się coś takiego uzyskać??
Na moment obecny tworzy mi dwa różne wiersze i nie bardzo wiem jak to ugryźć.
Z góry dziękuję za odpowiedź
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.