在 MySQL 中使列不可变

sin*_*800 6 mysql trigger constraint

出于一致性原因,我想使关系中的列不可修改。

背景故事是我有一个:n 关系,其中“连接”关系具有附加值。我不希望任何人能够更改关系伙伴的 ID。

到目前为止我想出了什么:

创建一个触发器来检查 NEW 值是否与 OLD 值相同。但如果条件证明为 TRUE,我不知道如何拒绝 UPDATE 操作。

到目前为止,这是我的触发器:

CREATE TRIGGER deny_nton_change BEFORE UPDATE ON Schueler_in_Klasse
FOR EACH ROW BEGIN
    IF NEW.Schueler_ID != OLD.Schueler_ID OR NEW.Klasse_ID != OLD.Klasse_ID THEN

    END IF;
END;
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 10

而不是中止更新,只是覆盖它?

...
FOR EACH ROW BEGIN
    SET NEW.Schueler_ID = OLD.Schueler_ID;
    SET NEW.Klasse_ID = OLD.Klasse_ID;
END
Run Code Online (Sandbox Code Playgroud)