0

ここに私のコードがあります:

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 から新しい日付に変更したい。

@編集

フィールドの日付が支払いに挿入された後、現在のフィールド「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'

... :-(

4

1 に答える 1

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;
于 2012-12-03T13:52:02.327 に答える