mysql 觸發器,對同張表觸發update
觸發器語句中使用了兩種特殊的表:old 表和 new 表。
old 表用於儲存 DELETE 和 UPDATE 語句所影響的行的複本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中。old 表和觸發器表通常沒有相同的行。Inserted 表用於儲存 INSERT 和 UPDATE 語句所影響的行的副本。在一個插入或更新事務處理中,新建行被同時新增到 new 表和觸發器表中。new 表中的行是觸發器表中新行的副本。
1.插入操作(Insert)
new表有資料,old表無資料
2.刪除操作(Delete)
new表無資料,old表有資料
3.更新操作(Update)
new表有資料(新資料),old表有資料(舊資料)
例子:對integration表更新,觸發該表其他欄位更新
create trigger integration_trigger
before UPDATE
on integration
for each row begin
update integration
set new.score = 3
where integration.user_id = new.user_id;
end
此時建立觸發器成功,當對integration表執行更新操作時卻報錯了,報錯資訊:
Can't update table 'integration' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
這是因為觸發器裡面對剛剛插入的資料進行了 insert/update, 則出現這個問題。因為會造成迴圈的呼叫.
應該使用set操作,而不是在觸發器裡使用 update,修改為:
create trigger integration_trigger
before UPDATE
on integration
for each row begin
set new.score = 3;
end
執行更新操作,成功!
相關推薦
mysql 觸發器,對同張表觸發update
觸發器語句中使用了兩種特殊的表:old 表和 new 表。old 表用於儲存 DELETE 和 UPDATE 語句所影響的行的複本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中。old 表和觸發器表通常沒有相同的行。Ins
oracle增量指令碼(記錄)建立觸發器監控對一張表的增刪改
刪除表 drop table test_1; drop table test_1_log; drop table A1; drop table B1; drop table C1; –建立測試表 CREATE TABLE test_1( t_id NUMBER
MySQL 觸發器例子(兩張表同步增加和刪除)
以下兩個例子來自: http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html 實測有效,但是原帖的分隔符不正確,因此稍作修改。 例子1: 建立兩個表,目的是在一個表裡新增一條記錄,另一個表也
同張表中同時查詢兩個字段顯示一個字段,對兩個字段進行按時間排序
principal mount sel con AC code rom inter nbsp select b.bid_name as bidName,bd.repayment_way as depict,r.exact_repayment_time as time, r
mysql 獲取一張表中, 另一張表不存在的資料
編寫sql語句中,經常需要編寫獲取一張資料表中不存在與另一張表的資料,相關編寫方法如下: 方法1: 使用not in ,效率低下,在資料較小的情況下可以採用如下編寫 SELECT * FROM a WHERE 1=1 AND a.Id NOT IN( SELECT
Mysql 一條update語句,更新多張表(存在關聯的表)
UPDATE table1 LEFT JOIN table2 ON table1.xx=table2.xx (關聯的欄位) SET table1.xx=value,table2.xx=value (update value)WHERE table1.xx=xx
Java鏈接HBASE數據庫,創建一個表,刪除一張表,修改表,輸出插入,修改,數據刪除,數據獲取,顯示表信息,過濾查詢,分頁查詢,地理hash
can charat nfa true 目錄結構 dfa byte sin extra 準備工作 1、創建Java的Maven項目 創建好的目錄結構如下: 另外註意junit的版本,最好不要太高,最開始筆者使用的junit4.12的,發現運行的時候會報錯。最後把Junit
對同一張表讀寫頻繁如何避免鎖表
lag 發短信 查詢 rom 進行 time order lock In 如果是update多,建議支持臟讀with(nolock)這樣,寫不會影響讀。 如果都是insert,建議分成兩個表,一個歷史表,一個當前表,每天把當前表移到歷史表。 今天遇到一個發短信接
EXPDP導出表數據,排除某張表
開始 with clu min export 過濾 2.0 表數 今天 EXPDP導出表數據,排除某個表,遇到的問題今天測試了這個命令,剛開始我是這樣寫的 $ expdp hed directory=backdir dumpfile=he201807041505.dmp e
Mysql資料庫如何檢視某張表table被哪些儲存過程procedure使用過
一、摘要 由於程式碼重構,修改了表結構,開發人員修改完java後臺程式碼並內測沒問題後提交業務部門測試時發現,新客戶取不到產品價格,原因是儲存過程呼叫的還是舊資料表。為此,需要先找出哪些儲存過程使用了這些表,然後修改。那麼問題來了,mysql資料庫如何檢視哪些儲存過程使用了這些資料表呢?
Atitit Spring事務配置不起作用可能出現的問題: .是否是資料庫引擎設定不對造成的【筆者就遇到了這個問題,由於筆者使用的是mysql資料,但是在建立表的時候引擎預設(mysql中引擎預設為
Atitit Spring事務配置不起作用可能出現的問題: .是否是資料庫引擎設定不對造成的【筆者就遇到了這個問題,由於筆者使用的是mysql資料,但是在建立表的時候引擎預設(mysql中引擎預設為MyISAM,是不支援事務操作的),需要修改為InnoDB,就可以支援事務操作了
檢視mysql資料庫是否存在某張表
通過information_schema查詢資料庫是否存在某張表 select t.table_name from information_schema.TABLES t where t.TABLE_SCHEMA ='".$database."' and t.TABLE_NAME ='".$table
如何實現一個表字段資料變化,另一張表中資料隨著變化
資料表1(db_integrityevent): 資料表2:(db_corporatecreditscore): navicat觸發器寫法: 可以實現表中相關資料變化,表中其他跟隨這變化。 mysql命令列寫法: delimiter $$ for each row B
sql 中怎麼將A表插入B表中,,去除兩張 表中含有的重複資料
insert into B(欄位列表) select 欄位列表 from A where not exists(select * from B where a.keycol1 = b.keycol1) keycol1為A表和B 表中的欄位,可能帶有主鍵,可以此欄位來判斷A表和B表中是
Mysql資料庫,內連線多表查詢
student表 Result表 subject表 組合查詢三個表中不同的列(外來鍵):StudentNo,StudentName,SubjectName,StudentResult SELECT student.StudentNo,studentname,SubjectNam
使用註解自動解釋orm,從而實現無xml配置的jdbc泛型介面dao,對資料庫單表增刪查改
一、獲取資料庫連線和關閉資源 package cn.itdoer.base.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepa
java 連帶操作(兩張表關聯,一張表插入一條新資料,另外一張表也跟著插入一條新資料)
以角色許可權模組中增加功能為例子:a) 概念: 連帶操作:首先先在Role表中插入一條資料,接著拿到rid,往Role-Acl表中插入一條資料b)資料庫設計:Role表:Role-Acl表:c) 程式碼實現:RoleMap:/** * * @Description: 新增
ORACLE中觸發器實現刪除一張表中資料同時刪除另一表中相關資料
這是我的第一篇部落格。 有兩張表:BOOK、PGEVIEW,分別有一個名為BOOKID的欄位 想實現的功能:刪除BOOK表中的一行資料時刪除與PAGEVIEW表中BOOKID相等的資料行 實現方法:在BOOK表中建立一個觸發器BOOK_TRG_DELETE,具體實現語句如下
oracle 簡答建立一個監聽器記錄對某張表的操作記錄
需求: 在工作中遇到個需求,就是為了強化資料的安全性,需要建立一個監聽器來監聽對某一張表的操作記錄。 方案: 建立一個監聽器tri_SM_MOBILE_SOFTVERSION: cre
資料庫欄位存JSON,何不弄張表,行轉列
今天對專案進行優化,原有的資料庫中,有一張表A,裡面有個欄位,存了一段JSON格式配置引數,可能會很長。頁面端要對這個表進行展示和管理。那麼在管理這個欄位的時候就比較麻煩了,要把JSON轉成List放到頁面遍歷,儲存時再轉成JSON。楊老提出說搞一張表,同一個主鍵對就多個J