繁体   English   中英

如何将 DB2 触发器转换为 SQL 服务器?

[英]How to convert DB2 trigger to SQL Server?

我正在将一些 DB2 触发器转换为 SQL 服务器。 这里展示的其中一个我正在努力解决,Conversion 在一定程度上尝试过,但似乎还不够好,无法解决。

在更新或插入之前触发执行,并在写入数据库之前根据括号中的Select语句和 where 子句选择列PDE_KEY的值。

需要帮忙。

DB2 触发器

CREATE OR REPLACE TRIGGER "TDC" BEFORE
INSERT
    ON
    "DECL_CONSIGNMENT" REFERENCING NEW AS NEW FOR EACH ROW NOT SECURED SET
    NEW.PDE_KEY = (
    SELECT
        D.PDE_KEY
    FROM
        DECL D
    WHERE
        D.DE_KEY = NEW.DE_KEY)

SQL 这个触发器的服务器转换(我的尝试):

CREATE TRIGGER [TDC]
ON [DECL_CONSIGNMENT]
INSTEAD OF INSERT
AS 
BEGIN
    DECLARE @PDE_KEY BIGINT
    SET NOCOUNT ON

    SELECT
        @PDE_KEY = D.PDE_KEY
    FROM
        DECL D
    WHERE
        D.DE_KEY = (...work upto here)
END

instead of触发器必须显式执行所需的 dml。

REATE TRIGGER [TDC]
ON [DECL_CONSIGNMENT]
INSTEAD OF INSERT
AS 
BEGIN       
    SET NOCOUNT ON;
    INSERT INTO [DECL_CONSIGNMENT] (a, b, .. PDE_KEY, ..)
    SELECT a, b, .. (
       SELECT
         D.PDE_KEY
       FROM
         DECL D
       WHERE
         D.DE_KEY = i.DE_KEY),
       ..
    FROM inserted i;
END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM