1

こんにちは、現在、テーブルの更新時にトリガーが更新されています。これを変更して、特定の列が変更されたときにのみ起動するようにする必要があります。

コード: 更新後にトリガー マネーを作成するthings

for each row
begin
UPDATE `current` c 
INNER JOIN things    t ON c.id2 = t.id2
INNER JOIN dude_base d ON d.id1 = c.is1
SET c.`curr_cash` = t.thing_cost * d.salary / 100;
end;
$$

そして、物事から「thing_cost」に更新があったときにオンになるように変更する必要があります。

@edit curr_cash と物価はまったく異なる値であることを更新する必要があります。それらを比較することはできません。それらは常に異なります。

私が使用したとき

if NEW.things_cost <> OLD.things_cost

次のエラーが表示されます。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 10

@編集

create trigger wys_sk_b after update on `dude_base`
for each row
begin
if NEW.salary <> OLD.salary
then
UPDATE `current` s 
INNER JOIN things u ON s.id_thing = u.id_thing 
INNER JOIN dude_base b ON b.id = s.id
SET s.`curr_cash` = u.thing_cost * b.salary/ 100;
end if;
$$
4

2 に答える 2

3

このコードを試してください...

**create table sales** (orderno INT, sale INT,empsalary int, ts TIMESTAMP);

**create table history** (updated varchar(20), oldvalue INT,newvalue INT);

INSERT INTO **sales** (orderno,sale,empsalary) VALUES(1,700,7000);

INSERT INTO **sales** (orderno,sale,empsalary) VALUES(2,800,8000);

INSERT INTO **sales** (orderno,sale,empsalary) VALUES(3,900,9000);


DROP TRIGGER test.instrigger;

デリミタ ///

CREATE TRIGGER test.instrigger AFTER UPDATE ON sales
FOR EACH ROW

BEGIN

    IF NEW.sale <> OLD.sale THEN  
        INSERT INTO history (updated, oldvalue, newvalue) VALUES('sale', OLD.sale,NEW.sale);

    END IF;
    IF NEW.empsalary <> OLD.empsalary THEN  
        INSERT INTO history (updated, oldvalue, newvalue) VALUES('empsalary', OLD.empsalary,NEW.empsalary);
    END IF;
END;

///

区切り文字;

于 2014-03-06T10:20:59.170 に答える
3
delimiter $$
create trigger wys_sk_b after update on `dude_base`
for each row
begin
  if NEW.salary <> OLD.salary
  then
    UPDATE `current` s 
    INNER JOIN things u ON s.id_thing = u.id_thing 
    INNER JOIN dude_base b ON b.id = s.id
    SET s.`curr_cash` = u.thing_cost * b.salary/ 100;
  end if;
end;
$$
于 2012-12-03T15:11:32.537 に答える