触发器:将日期从1个表移动到另一个表

时间:2012-12-03 13:48:31

标签: mysql sql triggers

这是我的代码:

create trigger term_ost after update on `payments`
for each row
begin
UPDATE `current` s 
INNER JOIN payments w ON w.id_thing = s.id_thing
INNER JOIN payments w ON w.id= s.id
SET s.`new_pay_date` = w.date;
end;
$$

它不起作用。

我希望在有人购买的东西有新的付款后设置新的日期,并使用new_pay_date中的新日期更改字段日期的最后日期。

@EDIT

我正在尝试更改我的触发器,因此它将更新字段“new_pay_date”,将当前日期后的字段更新为付款。

表格当前:

curr_cash
new_pay_date
id_person
id_thing
sum_of_things

要点: 当我向支付添加新数据时(例如某人为某物付钱),我希望不再更新他在表格中的最后一次付款时间。在“sum_of_things”中,它总结了客户所做的所有钱。

@edit 在这段代码之后:

    CREATE TRIGGER term_ost AFTER INSERT ON `payments`
FOR EACH ROW
BEGIN
    UPDATE `current`
        SET s.`new_pay_date` = NEW.date
    WHERE 
        s.id_thing = NEW.id
END;

有错误:

INSERT INTO `mydb`.`payments` (
`id` ,
`date` ,
`id_thing` ,
`thing_cost`
)
VALUES (
'12312312322', '2012-12-11 15:00:00', '1', '500'
)

MySQL comment:
#1054 - Unknown column 's.new_pay_date' in 'field list'

......: - (

1 个答案:

答案 0 :(得分:0)

您多次使用相同的表别名w,这是不允许的。似乎您想加入多个列:

CREATE TRIGGER term_ost AFTER INSERT ON `payments`
FOR EACH ROW
BEGIN
    UPDATE `current`
        SET `new_pay_date` = NEW.date
    WHERE 
        id_thing = NEW.id
END;