1. 程式人生 > >SQL Update 觸發器 當本條記錄某個欄位更新後,用該記錄去更新另一張表的資料

SQL Update 觸發器 當本條記錄某個欄位更新後,用該記錄去更新另一張表的資料

思路來源於該部落格

--SqlServer Update觸發器判斷某個欄位的值是否已經更改

https://blog.csdn.net/zhangshufei8001/article/details/51568834

create trigger [tig_update] on 表名

after update  
as 
declare @id int,

@upflag int

begin

select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
update 子表名 set lasttime = GETDATE() where pid = @id

end

對於該觸發器我的理解是:

定義了兩個變數 id (更新記錄的Id) 、uplfag (更新記錄數-用來判斷更新記錄是否成功)  

我覺得博主的部落格這句話說的相當精髓:

解釋一下,deleted表中存的是修改前的值,inserted中存的是修改後的值,這樣是不是更好呢!

所以我要實現的需求 程式碼如下:

create trigger [tig_update] on 表名

after update  
as 
declare @id int,

@upflag int,

@nid int

begin

select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
update 子表名 set lasttime = GETDATE() where pid = @id

end

相關推薦

SQL Update 觸發器 本條記錄某個更新記錄更新資料

思路來源於該部落格 --SqlServer Update觸發器判斷某個欄位的值是否已經更改 https://blog.csdn.net/zhangshufei8001/article/details/51568834 create trigger [tig_update

SQL 查詢的結果某個是Null預設的值代替

如果查詢的結果某個欄位是Null,用預設的值代替。 1、)Sql server中: select   case   when   欄位名1   is   null                                  then   替代值           

sql查詢表中某個值相同其他取最大值的記錄

SELECT a.* FROM user a WHERE not EXISTS( select 1 from user where name = a.name and age > a.age ) 對user表進行掃描,編號(或姓名)相同情況下,沒有比前邊年齡大

SQL Server資料庫中查詢含有某個記錄條數

SELECT object_name(sc.id) as TableName, sc.Name as ColumnName, si.rows as RowCounts FROM SysColumns sc LEFT JOIN SysObjects so ON sc.id =

SQL分組且取每組某個最大或最小值

  有個表gz: 要按sku分組,同時取每個sku的stock最大的那條 SQL語句: SELECT * FROM (SELECT * FROM gz ORDER BY stock DESC ) a GROUP BY sku 結果: 如果要最小的

mysql把一個某個的內容複製到某個SQL語句寫法

需求:把一個表某個欄位內容複製到另一張表的某個欄位。 實現sql語句1: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_folder f2 ON f1.name = f2.

sql server 統計資料庫中某個的值剔除重複資料和查詢重複的資料

1.有的時候,在資料庫中存在一些重複的資料,但是我們又想統計某個欄位的值,重複的要剔除掉,如圖所示: 在上面的圖我們可以看到,id=2,3 id=4,5的4條資料都重複了,我們統計amount只要其

MYSQL 查詢前N條記錄某個的和

假設有個課程表course,其中有個欄位Ccredit,現在想查詢這個欄位前N條記錄的和,那麼這個語句該怎麼寫? 可能首先想到的就是:select sum(Ccredit) from course limit N; 可是經過試驗卻發現查詢出來的是這個欄位所有記錄的和,而不是前

【Oracle】oracle sql某個分組然後從每組取出最大的條紀錄

oracle sql(按某個欄位分組然後從每組取出最大的一條紀錄)? 比如表  mo_partprg 欄位有:listid recid         1       1         1       2         2       3         2       4         2     

sql中order by 【以某個排序】

ORDER BY 語句用於對結果集進行排序。 再具體的說不清了,我們直接上例子吧。 現在我們有一個表,如下: 例項1 --asc是升序的意思 預設可以不寫 desc是降序 selec

資料庫中某個中的某個的值是逗號隔開的多個值根據逗號拆分並從一個中查出資料返回

有兩個表A,B,表結構如下: A表 B表 關聯關係說明如下: (1)A.hospital_catalog=B.id (2)A表中hospital_catalog欄位的值是以 逗號 “,” 隔開,且兩邊用中括號“[ ]”包起,

oracle 資料庫中某個逗號分隔得到對應列中的個數(列轉行)實現方法

由於各種原因,資料的原則問題,導致某個欄位上出現多個數據(依據分隔符隔開),比如 name 欄位為 張三;李四;王五等等 需求:求一張表中name欄位中出現的個數; 想要得到的結果為: 對

oracle 按某個分組然後從每組取出最大的條紀錄

欄位有:listid recid         1       1         1       2         2       3         2       4         2       5 想得到的資料是     按照   listid  分組  

監聽vuex中state內某個的變化觸發模組中執行函式的寫法

        watch:{getorderid(curval,oldval){   //監聽了computed中getorderid的值,如果發生改變就觸發console.logconsole.log(`最新值${curval}--舊值${oldval}`);}},com

Mongodb在查詢某個是否存在執行刪除python中排序和建立索引

查詢欄位是否存在 查詢course表中,存在lectures_count欄位的記錄資訊 db.course.find( { “lectures.lectures_count”: { $exists: true } } ) 引數:ture或者false 使

sql server觸發器實現插入時操作

以前都是也得mysql,現在寫sqlserver的觸發器,感覺改動還是蠻大的 1.定義變數 #在mysql中變數直接這麼定義就可以了 SET @VALUE = "111"; #在sql server中 declare @count int; #並賦值 set @count

MySQL的字段值Update

conn class tab highlight ble pre true field brush SQL示例: UPDATE TABLE1 a, TABLE2 b SET a.field1 = b. field1 [, a.field2 = b.field2, ...

postgresql 從中查詢出記錄然後批量插入到

 有個業務從 appuser 表中 把uid 查出來所有uid 資料,然後批量插入 app_user_sdk 表中 insert into app_user_sdk ((select uid,'MY' from appuser);  又要重複插入,又把新新增的使用者,

mysql資料庫的簡單增刪改查合併拼接字元操作java完成將中的查詢結果合併存入的指定

首先問題描述:我現在有兩個表,一個表是關鍵詞,一個表是含有關鍵詞的標籤,需要做的就是在關鍵詞表中新建一個標籤欄位,把包含該關鍵詞的全部標籤存入其中。比如關鍵詞是Java,標籤可能有Java開發,Java後臺等。我這裡關鍵詞有4000個,標籤有40000個,我用了小段java程式碼+sql的函式就完成

【轉載】對BP進行增強(螢幕擴充)如何通過BAPI建立BP

建立BP成功後,直接呼叫更改客戶的一般資料 函式進行更改,注意幾個輸入引數。         CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL'  &nbs