triggery w mysql

Odpowiedz Nowy wątek
2018-11-09 16:01
0
CREATE TABLE IF NOT EXISTS types (
  id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(80),
  INDEX(name)
) engine=InnoDB;
 
CREATE TABLE IF NOT EXISTS owners (
  id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  first_name VARCHAR(30),
  last_name VARCHAR(30),
  address VARCHAR(255),
  city VARCHAR(80),
  telephone VARCHAR(20),
wallet DECIMAL(),
  INDEX(last_name)
) engine=InnoDB;
 
CREATE TABLE IF NOT EXISTS pets (
  id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30),
  birth_date DATE,
  type_id INT(4) UNSIGNED NOT NULL,
  owner_id INT(4) UNSIGNED NOT NULL,
  INDEX(name),
  FOREIGN KEY (owner_id) REFERENCES owners(id),
  FOREIGN KEY (type_id) REFERENCES types(id)
) engine=InnoDB;
 
CREATE TABLE IF NOT EXISTS visits (
  id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  pet_id INT(4) UNSIGNED NOT NULL,
  visit_date DATE,
  description VARCHAR(255),
  FOREIGN KEY (pet_id) REFERENCES pets(id)
) engine=InnoDB;

Wcześniej używałem mssql'a i tam można było w triggerach używać rollback. Tutaj mam ten problem że chciałbym napisać trigger gdzie nie będę mógł dodać nowej wizyty gdy właściciel zwierzaka ma 1000 długu.

Próbwałem nawet napisać prosty trigger jak

 
CREATE TRIGGER wallet_check BEFORE INSERT ON visits 
FOR EACH ROW
    BEGIN
 
    IF(NEW.pet_id <3) THEN 
  INSERT INTO visits(id,visit_date,description,pet_id,vet_id)
VALUES (NEW.id, NEW.visit_date, NEW.description,NEW.pet_id,NEW.vet_id);
 
END IF;
END
 

Nie zaakceptowało mi nawet takiego triggera. Wiem że w przypadku mysql używa się w takich przypadkach tranzakcji ale nie mam pojęcia jak to zrobić

edytowany 1x, ostatnio: masterkwi, 2018-11-09 16:02

Pozostało 580 znaków

2018-11-09 18:15

w mysql możesz wykorzystać zwrócenie komunikatu błedu (polecenie SIGNAL), jak przykładowo tutaj:
https://stackoverflow.com/que[...]r-to-stop-an-insert-or-update

edytowany 1x, ostatnio: Seti87, 2018-11-09 18:17

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