[英]MySQL TRIGGER BEFORE INSERT
I cant get this to work, it runs OK, but nothing happens in insert 我无法使它正常工作,它运行正常,但插入时无任何反应
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;
What im i doing wrong?? 我在做什么错?
if I have understood correct then what you are actually trying to achieve is to have a default value of 1
for the column jo
. 如果我理解正确,那么您实际要实现的是将jo
列的默认值设置为1
。 in such case no need of a before insert trigger
. 在这种情况下,不需要before insert trigger
。 You can just define that as default value
for that column while creating the table like 您可以在创建表时将其定义为该列的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;
Then after insertion, you will have a record as 然后插入后,您将有一条记录为
ID JA JO
1 16 1
See a demo Fiddle Here 在这里观看演示小提琴
Talking about your create trigger syntax. 谈论您的创建触发器语法。 Try the below modified trigger code 试试下面修改后的触发代码
DELIMITER $$
CREATE TRIGGER test BEFORE INSERT ON prueba
FOR EACH ROW
BEGIN
SET NEW.jo=1;
END$$
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.