SQL触发器帮助UPDATE的行和列

时间:2012-08-15 19:30:42

标签: sql sql-server-2008 triggers sql-update

我在获取SQL触发器以执行我想要的操作时遇到问题。我需要在更新另一个字段时填充表中的字段。更具体地说,当输入员工ID时,我需要生成Unicode以使条形码工作。我已经编写了生成unicode的代码,我只需要触发器来运行。

这是我需要的骨架:

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]。

感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:4)

要熟练使用SQL Server,首先要做的是对大多数操作作为一组应用时效果最佳这一事实感到满意。从“每行”开始思考几乎总会让你走上错误的道路。

在这种情况下,由于更新可能会影响多行,因此您需要一次处理所有这些行。您可以使用inserted伪表来完成此操作。我看了你的照片,但你的示例代码非常混乱,我不知道如何将两者联系起来。因此,这是一个快速示例,您必须根据实际架构进行定制。

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

答案 1 :(得分:0)

我认为你不需要'每一行?' :P

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

总体参考上面的答案。

答案 2 :(得分:0)

这是语法。只需将somefield替换为您需要输入的任何字段,将DestinationTable替换为要添加Unicode记录的表。

CREATE TRIGGER Unicode ON SomeTable
AFTER UPDATE 
AS

INSERT INTO DestinationTable
(somefield)
SELECT somefield FROM INSERTED
GO