triggery w mysql

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ć

0

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

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