欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 8無法創建觸發器

老白2年前12瀏覽0評論

最近在使用mysql 8的過程中,遇到了無法創建觸發器的問題。經過一番研究和實踐,發現這是因為mysql 8對于安全性的提升而做出的修改所導致的。

在mysql 8之前,創建觸發器無需驗證函數、過程等對象是否存在,但是在mysql 8中,為了加強安全性,必須在創建觸發器之前驗證是否存在相關對象。這就導致了在mysql 8中創建觸發器時出現錯誤。

DELIMITER $$
CREATE TRIGGER test_trigger
BEFORE INSERT ON test_table
FOR EACH ROW
BEGIN
INSERT INTO test_log(msg) VALUES('test');
END$$
DELIMITER ;

上述代碼在mysql 8中會出現以下錯誤:“Error Code: 1305. FUNCTION test.test_log does not exist”。這是因為mysql 8要求在創建觸發器之前,必須確保test.test_log存在。如果test.test_log不存在,則需要先創建它,然后再創建觸發器。

DELIMITER $$
CREATE TABLE IF NOT EXISTS test_log (
id INT AUTO_INCREMENT PRIMARY KEY,
msg VARCHAR(255) NOT NULL
)$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER test_trigger
BEFORE INSERT ON test_table
FOR EACH ROW
BEGIN
INSERT INTO test_log(msg) VALUES('test');
END$$
DELIMITER ;

通過上述代碼,在創建觸發器之前先創建了test_log表,然后再創建test_trigger觸發器,就可以順利創建觸發器了。

總之,在mysql 8中創建觸發器時,要特別注意驗證觸發器依賴的函數、過程、表等對象是否存在,以免出現錯誤。