我想建一個觸發器,如果test表中某一行被更新后,把該行的flg欄位置成"有更新",該如何寫?自己試著寫了一個,不大對!
DROP TRIGGER IF EXISTS test_trigger_update;
CREATE test_trigger_update
AFTER update ON test
FOR EACH ROW
BEGIN
update test set flg='有更新' where id = old.id;
END
uj5u.com熱心網友回復:
是不是一個表變動了,只能往另外一個表做記錄uj5u.com熱心網友回復:
alter table tt add uptime timestamp on update current_timestamp;為它加一列欄位不行嗎;記錄最后修改時間。
你的觸發器用法有問題,如果這樣更新那不死回圈了嗎。
uj5u.com熱心網友回復:
drop table if exists test;
create table test(
id int primary key,
flg nvarchar(20)
);
insert into test values(1,'');
insert into test values(2,'');
drop trigger if exists trig_test_update;
delimiter $$
CREATE TRIGGER `trig_test_update`
before update on `test` for each row
BEGIN
set new.flg='有更新';
END;
$$
update test set flg='a';
select * from test;
/*
+----+--------+
| id | flg |
+----+--------+
| 1 | 有更新 |
| 2 | 有更新 |
+----+--------+
*/
uj5u.com熱心網友回復:
你更新這張表的sql陳述句里,加上flag=有更新 不就行了?自己觸發自己有問題吧。搞不好死回圈。uj5u.com熱心網友回復:
這塊如果用出發器的話,可能真的陷入死回圈,一直在執行update.但是如果加一個欄位,alter table tt add uptime timestamp on update current_timestamp ,并且我在根據你的思路撰寫觸發器的時候遇到一個問題,你這樣的出發器也就是每條資料只update一次有效,如果重復update的,flg欄位一直展示的有更新,那樣,將不會展示其效果轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/75244.html
標籤:MySQL
上一篇:MySQL資料庫。
下一篇:一次錯誤的mysql升級方式
