2012-08-15 73 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