我有一个创建触发器的脚本,我想多次运行它,如果触发器已经存在,则需要跳过创建部分。
mysql触发器中是否有“如果不存在则创建”?
我试过 :
IF NOT EXISTS ((SELECT TRIGGER_NAME
FROM information_schema.triggers
WHERE TRIGGER_SCHEMA = 'xxx_admin' AND TRIGGER_NAME = 'test_AFTER_UPDATE'))
THEN
CREATE DEFINER=`root`@`localhost` TRIGGER `xxx_admin`.`test_AFTER_UPDATE` AFTER UPDATE ON `test` FOR EACH ROW
BEGIN
INSERT INTO auditTest
select *, now() from test where id = NEW.id;
END;
END IF;
Run Code Online (Sandbox Code Playgroud)
我得到:语法错误“'IF'在此位置不是有效输入
没有CREATE TRIGGER“如果不存在”
您必须按如下方式执行触发器的创建:
USE xxx_admin
DELIMITER $$
DROP TRIGGER IF EXISTS test_AFTER_UPDATE $$
CREATE DEFINER=`root`@`localhost` TRIGGER `xxx_admin`.`test_AFTER_UPDATE`
AFTER UPDATE ON `test` FOR EACH ROW
BEGIN
INSERT INTO auditTest
select *, now() from test where id = NEW.id;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
试一试 !!!
至于您的错误,像这样使用 IF 在 CLI 中是无效的。
| 归档时间: |
|
| 查看次数: |
18343 次 |
| 最近记录: |