- BCP
- BULK INSERT
- INSERT ...SELECT * FROM OPENROWSET(BULK...)
大量匯入 | 預設行為 | 限定詞 | 限定詞類別 |
---|---|---|---|
BCP | 停用 | -h " FIRE_TRIGGERS " | 提示 |
BULK INSERT | 停用 | FIRE_TRIGGERS | 引數 |
INSERT ...SELECT * FROM OPENROWSET(BULK...) | 觸發 | WITH(IGNORE_TRIGGERS) | 資料表提示 |
BULK INSERT 觸發 Trigger Demo
建立 BulkTrigger 和 BulkTriggerTime 兩個 Table 並在 BulkTrigger 上建立 triBulkTrigger Trigger,當有資料 INSERT 進 BulkTrigger 時來觀察 Trigger 是否被觸發,進而把資料 INSERT 進入 BulkTriggerTime 內。
- Sample Data
USE TempDB
GO
IF OBJECT_ID('TempDB..BulkTrigger') IS NOT NULL DROP TABLE TempDB..BulkTrigger
IF OBJECT_ID('TempDB..BulkTriggerTime') IS NOT NULL DROP TABLE TempDB..BulkTriggerTime
IF OBJECT_ID('TempDB..triBulkTrigger') IS NOT NULL DROP TABLE TempDB..triBulkTrigger
CREATE TABLE BulkTrigger (ROWNO char(10))
CREATE TABLE BulkTriggerTime (ROWNO char(10) , insertTime datetime)
INSERT INTO BulkTrigger VALUES('001')
INSERT INTO BulkTrigger VALUES('002')
INSERT INTO BulkTrigger VALUES('003')
GO
CREATE TRIGGER triBulkTrigger
ON TempDB.dbo.BulkTrigger
AFTER INSERT
AS
BEGIN
INSERT INTO BulkTriggerTime (ROWNO , InsertTime)
SELECT ROWNO , GETDATE()
FROM inserted
END
GO
- 利用 BULK INSERT 把資料 INSERT 進入 BulkTrigger Table
BULK INSERT TempDB.dbo.BulkTrigger
FROM 'C:\BulkTrigger.txt'
SELECT * FROM BulkTrigger
SELECT * FROM BulkTriggerTime
- 利用 BULK INSERT 並指定 FIRE_TRIGGERS 把資料 INSERT 進入 BulkTrigger Table
BULK INSERT TempDB.dbo.BulkTrigger
FROM 'C:\BulkTrigger.txt'
WITH ( FIRE_TRIGGERS ) -- 指定 FIRE_TRIGGERS
SELECT * FROM BulkTrigger
SELECT * FROM BulkTriggerTime
- 參考資料
- 論壇問題出處 1、2
- 在大量匯入資料時,控制觸發程序的執行
沒有留言:
張貼留言