【问题标题】:SQL trigger help on UPDATE of row and columnSQL触发器帮助更新行和列
【发布时间】:2012-08-15 19:30:41
【问题描述】:

我在获取 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] 生成代码。

感谢您提供的任何帮助!

【问题讨论】:

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


    【解决方案1】:

    要精通 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
    

    【讨论】:

      【解决方案2】:

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

      CREATE TRIGGER Unicode ON SomeTable
      AFTER UPDATE 
      AS
      
      INSERT INTO DestinationTable
      (somefield)
      SELECT somefield FROM INSERTED
      GO
      

      【讨论】:

      【解决方案3】:

      我认为您不需要“每行???” :P

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

      总体参考上面的答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-10
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        相关资源
        最近更新 更多