如何在MySQL中執行等價語句?我想要它,如果輸入是一個特定的值,不要插入該行。在SQL SERVER中,我只能說ROLLBACK。 MySQL中的等效命令是什麼?謝謝。MySQL限制插入
CREATE TRIGGER tr_some_trigger
ON some_table
FOR INSERT
AS
BEGIN
IF inserted.topic == 'test' THEN
ROLLBACK
ENDIF
END
如何在MySQL中執行等價語句?我想要它,如果輸入是一個特定的值,不要插入該行。在SQL SERVER中,我只能說ROLLBACK。 MySQL中的等效命令是什麼?謝謝。MySQL限制插入
CREATE TRIGGER tr_some_trigger
ON some_table
FOR INSERT
AS
BEGIN
IF inserted.topic == 'test' THEN
ROLLBACK
ENDIF
END
觸發不能使用或明或暗地開始 或結束交易,如START TRANSACTION,COMMIT或ROLLBACK語句。
所以ROLLBACK
不會觸發你的裏面工作,但如果觸發拋出一個異常/錯誤,它會阻止插入成功,所以你可以做的是,如果你的條件符合拋出一個異常(一個方法是調用一個未定義的函數)。
例如:
DELIMITER $$
CREATE
TRIGGER `db`.`before_insert` BEFORE INSERT
ON `db`.`dummy_table`
FOR EACH ROW BEGIN
IF new.topic = 'test' THEN
CALL func_1();
END IF;
END$$
DELIMITER ;
假設func_1不存在它會阻止你的新插入的記錄。
這是在MySQL回滾了。檢查文檔here。
這是唯一的方法嗎?僅僅調用一個不存在的函數來使它失敗是一個好習慣嗎?如果出於某種不幸的原因,某人創建了一個具有相同名稱的函數,觸發器將不再工作。 – Eric
在mysql中沒有throw或raise關鍵字,所以這是其中一種方式,對於其他人來看這個線程http://stackoverflow.com/questions/465727/raise-error-within-mysql-function –