1. 程式人生 > >sqlserver在觸發器中執行動態sql用到inserted(deleted)表

sqlserver在觸發器中執行動態sql用到inserted(deleted)表

  這兩天公司產品中要加個資料同步用的觸發器,oracle版沒什麼問題,很順利的寫完了。

      在寫sqlserver版時遇到了麻煩。由於在觸發器中要根據inserted(deleted)表的資料,對另一個表進行更新操作,而這個表的某些欄位是不固定的,所以需要寫成動態sql,利用exec來執行。這時麻煩來了,exec執行時,無法訪問到inserted(deleted)表。壞了,這該如何是好?

經反覆google+baidu+試驗,問題總算解決了。總結一下,大致有以下兩種方法:

      1、將inserted(deleted)表的資料放到臨時表#temp,然後再來exec;

      2、用遊標對inserted(deleted)表進行逐條處理。

具體採用哪種,可根據業務特點來定,本人採用的是方法1。

如果哪位還有別的好辦法,請不要吝惜,留個言,好讓更多的朋友學習一下。呵呵。

相關推薦

sqlserver觸發器執行動態sqlinserteddeleted

  這兩天公司產品中要加個資料同步用的觸發器,oracle版沒什麼問題,很順利的寫完了。       在寫sqlserver版時遇到了麻煩。由於在觸發器中要根據inserted(deleted)表的資料,對另一個表進行更新操作,而這個表的某些欄位是不固定的,所以需要寫成動態

存儲過程執行動態Sql語句

查詢 需要 一點 定義 data 復制 ast 我們 臨時   在最近的項目中,有用到動態執行sql語句,SQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXE

怎樣SQL存儲過程執行動態SQL語句

緩存 參數 insert 每次 一點 證明 record scac 清空緩存 MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出接口,而EXEC沒有。還有一個最大的好

DB2 存儲過程執行動態SQL

values exec 退出 .... strong arch 包含 gin 使用 樣本代碼: DROP PROCEDURE QUOTATION.COPY_SAMPLE; CREATE PROCEDURE QUOTATION.COPY_SAMPLE ( IN tab

儲存過程執行動態Sql語句

  MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出介面,而EXEC沒有。還有一個最大的好處就是利用sp_executesql,能夠重用執行計劃,這就大大提供了執

Oracle 儲存過程執行動態SQL動態

create or replace procedure mw_sys.clearrubbishdatefy2 is type table_type is table of mw_app.mwt_ud_yscsjdl.tablename%type; tablenameAr

在pl/sql執行動態sql

       動態sql就是把sql寫在一個字串裡,在儲存過程中解析字串執行sql。這種動態sql很多時候會在別的語言裡寫,再連線資料庫進行操作,這樣的確方便很多,例如在java中使用JDBC。但是如

Oracle 過程執行動態 SQL 或 DDL 語句

如果你用的是 Oracle 8i 及以上的版本,那簡單,在過程中用 execute immediate sql_str 就行, sql_str 是一個拼湊的 SQL 語句,但這個動態語句中帶引數,或 Select 的結果要 into 到變數中時就要稍加留心一下了。而在

PostgreSQL使用動態SQL-實現自動按時間建立分割槽

PostgreSQL中通過繼承,可以支援基本的表分割槽功能,比如按時間,每月建立一個表分割槽,資料記錄到對應分割槽中。按照官方文件的操作,建立子表和index、修改trigger等工作都必須DBA定期去手動執行,不能實現自動化,非常不方便。 嘗試著通過在plpgsql程式碼

Androidapk動態載入技術研究2android插件化及實現

name creat package path iss fontsize 調用 dex con 了解了android中類載入的前期知識點後,來看看android中DexClassLoader詳細的實現 詳細載入流程例如以下: 宿主程序會到文件系統比

在Android 使用KSOAP2調WebService

arch 輸出 移植 發包 runnable round csdn service服務 語言   WebService 是一種基於SOAP協議的遠程調用標準。通過WebService可以將不同操作系統平臺,不同語言、不同技術整合到一起。在Android SDK中並沒有提供調

Python 爬取網頁JavaScript動態新增的內容

使用 selenium + phantomjs 實現 1、準備環境 selenium(一個用於web應用程測試的工具)安裝:pip install selenium phantomjs(是一種無介面的瀏覽器,用於完成網頁的渲染)下載:http://phantomjs.or

Python 爬取網頁JavaScript動態新增的內容

當我們進行網頁爬蟲時,我們會利用一定的規則從返回的 HTML 資料中提取出有效的資訊。但是如果網頁中含有 JavaScript 程式碼,我們必須經過渲染處理才能獲得原始資料。此時,如果我們仍採用常規方法從中抓取資料,那麼我們將一無所獲。那麼,通過Web kit可以簡單解決這個

反射包 java.lang.reflect⑦ 之 Java Proxy 動態代理類 探祕

這個系列好久沒有續作了,你以為完了,錯了。這個動態代理有說不完的知識點,我也是在不斷的學習中才瞭解得到更多的知識。但無可否認的一點是它需更多其他的知識的支援,比如設計模式,設計思想。工作越久越覺得設計模式這個東西的重要性。  其實動態代理的前兩個例子只是簡單的列出了它的一個

04 JVM是如何執行方法調

操作 靜態 文章 加載過程 mage 空間 sta 實現 整理 虛方法調用 Java 裏所有非私有實例方法調用都會被編譯成 invokevirtual 指令,而接口方法調用會被編譯成 invokeinterface 指令。這兩種指令,均屬於 Java 虛擬機中的虛方法調用。

iOS執行緒的基本介紹OC

一:pthread:基於C 二:NSThread:基於OC 三:GCD:基於C 四:NSOperation:對GCD面向物件的包裝 (一):GCD基本操作:六種任務執行模式 - (void)touchesBegan:(NSSet<UI

LeetCode動態規劃題目解答3

動態規劃是一種非常重要的演算法設計思想。歷史上有很多著名的演算法都是基於這種思想設計而來的,例如:Needleman–Wunsch演算法、CYK演算法、FFT演算法、維特比演算法等等。動態規劃的核心思想

sp_executesql執行動態SQL語句及獲得返回值

過去我執行拼湊出來的動態SQL語句,都直接使用EXEC @sql 的方式。有好幾次,都看到有資料說,應該儘量使用 sp_executesql。究其原因,是因為僅僅引數不同的情況下,sp_executesql可以重用執行計劃,這不就有跟儲存過程一樣的優勢了嗎?同時,sp_exe

oracle儲存過程如何執行動態SQL語句

有時需要在oracle儲存過程中執行動態SQL語句 ,例如表名是動態的,或欄位是動態的,或查詢命令是動態的,可用下面的方法: set serveroutput ondeclare    n number;    sql_stmt varchar2(50);    t varc

jsp頁面動態調系統時間的實現

簡單 char ext fonts get har interval sso 星期 在做WEB項目時,經常會須要 在頁面中顯示當前時間,以下介紹一個簡單的調用系統時間的方法,效果如圖: 在頁面中插入以下代碼即可了 <div id="time"&