2012-08-15 114 views
1

我有問題得到一個SQL觸發器來做我想做的事情。當另一個字段更新時,我需要填充表中的一個字段。更具體地說,當輸入員工ID時,我需要生成Unicode以使條形碼工作。我已經編寫了代碼來生成unicode,我只需要觸發器就可以運行。SQL觸發幫助更新行和列

這是我所需要的骨架:

CREATE TRIGGER Unicode 
AFTER UPDATE of unique.id 
ON table [dbo].table 

FOR EACH ROW??? 
AS 
BEGIN 
    SELECT (unique.id2 
      now I need to set unique.id2 to the unicode function that I wrote 

我覺得我在錯誤的軌道與此有關。

這是我正在使用的數據庫(我沒有創建它)的圖像http://i.imgur.com/4wkfY.png。運行SQL Server 2008

更新PersonalDataID [2](員工ID)時。我需要爲PersonalDataID生成代碼[32]。

感謝您給予任何幫助!

回答

0

我不認爲你需要'FOR EACH ROW ???' :P

CREATE TRIGGER Unicode 
ON table [dbo].table 
AFTER UPDATE of unique.id 
AS 
Begin 
    (SELECT unique.id2...) 

總體參考上面的答案。

0

下面是語法。只需將某個字段替換爲您需要輸入的字段,並將DestinationTable替換爲要添加Unicode記錄的表。

CREATE TRIGGER Unicode ON SomeTable 
AFTER UPDATE 
AS 

INSERT INTO DestinationTable 
(somefield) 
SELECT somefield FROM INSERTED 
GO 
+0

謝謝!數據庫語言對我來說很奇怪,我主要是寫C語言的東西。 – user1598253 2012-08-15 19:38:45

+0

如果您有興趣,請閱讀以下文檔:http://msdn.microsoft.com/en-us/library/aa258254%28v=sql.80%29.aspx – Jim 2012-08-15 20:07:21

4

要成爲在SQL Server精通,你需要做的第一件事就是成爲舒適的事實,當一組應用的大多數操作是最好的。按照「每一排」的思路來看,幾乎總會讓你走錯路。

在這種情況下,由於更新會影響多行,因此您需要一次處理所有這些行。你可以通過使用插入的僞表來做到這一點。我查看了你的圖片,但你的示例代碼非常混亂,我不知道如何關聯這兩者。所以這是一個快速的例子,你將不得不根據你的實際模式進行裁剪。

CREATE TRIGGER dbo.UpdateUnicodeColumn 
ON dbo.table 
FOR UPDATE 
AS 
BEGIN 
    SET NOCOUNT ON; 

    UPDATE t SET BarcodeColumn = (your calculation, a function, maybe?) 
    FROM dbo.table AS t 
    INNER JOIN inserted AS i 
    ON t.key = i.key; 
END 
GO