0

学生と証明書の2つのテーブルがあります。学生テーブルから学生を削除するときに、証明書テーブルから特定の学生に関連する証明書を削除する必要があります。私はmysqlトリガーにあまり精通していません。助けてください。

これは私が試したものですが、それが正しいかどうかはわかりません

DELIMITER $$  
CREATE TRIGGER delCerts AFTER DELETE ON students
FOR EACH ROW
BEGIN
DELETE FROM certificates as certs WHERE certs.stCode = students.stCode;
END;
$$
4

1 に答える 1

2

InnoDBデータベースでは、証明書テーブルに外部キーを含めることでこれを実現できます。

idStudent INT NOT NULL,
FOREIGN KEY (idStudent) REFERENCES Students (id)
  ON DELETE CASCADE
  ON UPDATE CASCADE

学生テーブルから学生を削除すると、関連するすべての証明書も削除されます。あなたまたは誰かが(偶然または故意に)トリガーを無効にすると、データベースに一貫性がなくなるため、トリガーよりも優れていると思います。

于 2012-06-14T06:25:52.967 に答える