2010-11-08 67 views
2

某些第三方軟件爲各種導入使用「分段」表,以便我們嘗試導入的任何內容都可以通過其業務邏輯進行驗證。系統中的任何表都可以成爲目標,並且將col1分配爲您正在執行的導入的「類型」是標準做法。我可以給視圖中的列設置插入的默認值嗎?

表中的所有列都是通用的,即。 「data1」,「data2」,「data3」等...

所以col1是指定的「類型」列,並將設置爲「ContactImport」或「ProductImport」。我想不實際返回「類型」列......或者至少將其重命名爲「ImportType」。

所以我開始創建視圖來更好地管理我們的進口/出口。但是,如果人們使用v_ContactImport視圖,並且必須手動將col1設置爲「ContactImport」,那麼似乎可能會出錯:

那麼有沒有辦法讓視圖給col1一個默認值。

由於我衝過來,不知道如何明確指出是,這裏的景色本身的一個簡單的例子:

CREATE VIEW v_ContactImport 
AS 

SELECT data2 as FirstName, 
     data3 as LastName, 
     data4 as Phone  
FROM StagingTable 
WHERE data1='ContactImport' 

,並希望只是做

INSERT INTO v_ContactImport (FirstName, LastName, Phone) 
VALUES ('Jack', 'Handey', '5555555555') 

所以,那麼,如果我選擇v_ContactImport記錄會回來,因爲data1會自動設置爲'ContactImport'

有點猜測這是不可能的,但我想我會問。

回答

4

你可以定義你的看法,然後(在SQL Server 2005和了,而且很可能有類似的結構在其他DBMS)創建INSTEAD OF觸發器。從BOL切割,粘貼和修改,它看起來像這樣:

--Create an INSTEAD OF INSERT trigger on the view. 
CREATE TRIGGER InsteadTrigger on v_ContactImport 
INSTEAD OF INSERT 
AS 
BEGIN 
    --Build an INSERT statement that adds in your column 
    INSERT INTO StagingTable 
     SELECT 'ContactImport', Col1, Col2, ColEtc 
     FROM inserted 
END 
GO 
+0

這很好用,謝謝! – CodeRedick 2010-11-10 16:41:21

相關問題