在mysql中创建触发器

时间:2015-06-11 14:30:33

标签: mysql triggers

我在触发时遇到了一些问题..我有两个表:table2中的table1和table2我是table1的外键,也是table1中的一个日期...我是什么的要做的是:用table1中的日期减去当前日期,如果是7的主要值那么我必须将table2中属性的值设置为“10”,如果是次要的话我必须设置“20”..所以我试过这个:

CREATE DEFINER = CURRENT_USER TRIGGER `datab1`.`table2_AFTER_INSERT` AFTER INSERT ON `table2` FOR EACH ROW
BEGIN
    if(year(currentdate())-year(table1.datein))<7 then
set table2.test="10"
elseif (year(currentdate())-year(table1.datein))>=7 then
set table2.test="20"
end if;

END

但是我收到了很多错误..我很快就开始学习这些东西而且我不太了解如何使用触发器......你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

在MySQL的触发器中 - 你必须编写SQL。 MySQL不知道你的年份(table1.datein)是什么意思。

如果我理解正确 - 您正在尝试根据table1中的条件更新插入行的字段。

另外,为了更改插入的行,您应该定义AFTER触发器,而不是CREATE DEFINER = CURRENT_USER TRIGGER `datab1`.`table2_BEFORE_INSERT` BEFORE INSERT ON `table2` FOR EACH ROW BEGIN DECLARE x INT; SET x= (SELECT year(NOW()) - year(table1.datein) FROM table1 WHERE NEW.fk_field = table1.id ); IF x <7 THEN SET NEW.test = 10; ELSE SET NEW.test = 20; END IF; END;

以下是应该如何做的:

var entity = NSEntityDescription.entityForName("ChartDataEntity", inManagedObjectContext: self.managedObjectContext!)

希望有所帮助。