插入之前的MySQL TRIGGER

时间:2014-10-31 00:17:42

标签: mysql triggers

我无法让它工作,它运行正常,但插入

没有任何反应
DROP TRIGGER IF EXISTS test;
DELIMITER $$
CREATE
    TRIGGER test BEFORE INSERT 
    ON prueba 
    FOR EACH ROW     
    BEGIN
        SET NEW.jo=1
    END
DELIMITER $$;
insert into prueba (ja) values (16);

CREATE TABLE `prueba` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ja` int(11) DEFAULT NULL,
  `jo` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `prueba` WRITE;

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您实际要实现的目标是为1列设置默认值jo。在这种情况下,不需要before insert trigger。您可以在创建表格时将其定义为该列的default value,如

CREATE TABLE `prueba` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ja` int(11) DEFAULT NULL,
  `jo` int(11) DEFAULT 1, <-- Notice This Line
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后在插入后,您将有一条记录

ID  JA  JO
1   16  1

查看演示Fiddle Here

谈论你的创建触发器语法。尝试以下修改的触发器代码

DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON prueba 
    FOR EACH ROW  
    BEGIN   
        SET NEW.jo=1;
    END$$
DELIMITER ;