我在触发时遇到了一些问题..我有两个表: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
但是我收到了很多错误..我很快就开始学习这些东西而且我不太了解如何使用触发器......你能帮助我吗?
答案 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!)
希望有所帮助。