1

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

感谢您提供的任何帮助!

4

3 回答 3

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
于 2012-08-15T19:37:13.240 回答
0

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

CREATE TRIGGER Unicode ON SomeTable
AFTER UPDATE 
AS

INSERT INTO DestinationTable
(somefield)
SELECT somefield FROM INSERTED
GO
于 2012-08-15T19:37:05.893 回答
0

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

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

总体参考上面的答案。

于 2012-08-15T19:34:55.143 回答