Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 触发器:将日期从一个表移动到另一个表_Mysql_Sql_Triggers - Fatal编程技术网

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

Mysql 触发器:将日期从一个表移动到另一个表,mysql,sql,triggers,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; $$ 它不起作用了 我希望它设置新的日期后,有人购买的东西有

这是我的密码:

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”

表电流:

curr_cash
new_pay_date
id_person
id_thing
sum_of_things
总结: 当我将新数据添加到付款中(例如,某人为某件东西付款)时,我希望更新当前表中他最后一次付款的时间。在“东西的总和”中,它将客户支付的所有款项相加

@编辑 在此代码之后:

    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'

…:-(

您多次使用同一个表别名
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;

可能是因为“payments w”的双连接定义。在w.id\u thing=s.id\u thing和w.id=s.id\u thing上尝试
内部连接payments w。是的,好的。但我对它做了一点更改,在inster转换为payments后需要更新表current。不更新。当我更改时"更新
payments
以指示付款。我得到一个错误,付款中没有列名称new\u pay\u date。因为没有,所以我想更改的是current。您能否更新问题中的触发器定义,并简要介绍
current
表的结构?请查看更新后的响应。您需要参考添加到包含插入的记录的
NEW
表。另外,您不需要加入,只需使用
NEW
表中的日期和id来标识
current
中应该更新的记录。它不起作用。顺便说一句,id\u thing是项目的id,id本身是个人的id。因此我无法比较它们。Ch把它改成NEW.id\u东西,但还是没有希望。哎呀,没有别名,我的错!我更正了触发器定义。