【问题标题】:Rewriting a trigger in SQL-Server in Oracle SQL在 Oracle SQL 中重写 SQL-Server 中的触发器
【发布时间】:2020-05-09 23:47:09
【问题描述】:

我在 SQL Server 中创建了一个触发器,该触发器旨在每当数据输入到某个表(在本例中为一个名为 FORECAST_TEST_DATA 的表)时执行。然后触发器是从插入的行中获取某些值并将它们插入到名为 PRODUCT_TEST_DATE 表的表中。然后使用共享一个公共 PROD_NUM 值的产品填充表中的其他列。

SQL server 中的查询,如下所示:

CREATE OR ALTER TRIGGER FORECAST_TRIGGER ON FORECAST_TEST_DATA
FOR INSERT
AS
INSERT INTO PRODUCT_TEST_DATA
(PRODUCT_TEST_DATA.PROD_NUM, PRODUCT_TEST_DATA.MONTH, PRODUCT_TEST_DATA.STORE_TYPE, 
PRODUCT_TEST_DATA.PRODUCT_KEY, PRODUCT_TEST_DATA.CATEGORY, 
PRODUCT_TEST_DATA.BRAND_NAME,PRODUCT_TEST_DATA.COLOUR)
SELECT
inserted.PROD_NUM, inserted.MONTH, inserted.STORE_TYPE, inserted.PRODUCT_KEY,
PRODUCT_TEST_DATA.CATEGORY, PRODUCT_TEST_DATA.BRAND_NAME,PRODUCT_TEST_DATA.COLOUR
FROM inserted, PRODUCT_TEST_DATA
WHERE inserted.PROD_NUM = PRODUCT_TEST_DATA.PROD_NUM
GO

触发器已具备所需功能,只需将其重写为 Oracle SQL。

感谢您花时间阅读此问题,感谢您提供任何帮助。

【问题讨论】:

  • 你在纠结什么?
  • 尝试转换它,当你遇到困难时,粘贴它(上图)。我们可以帮助您解决剩下的问题,但要求我们完成所有工作并不好。例如,Oracle 触发器的文档非常容易找到。你应该只需要 10-15 分钟就能真正靠近。

标签: sql-server oracle database-trigger


【解决方案1】:

这里是 oracle 语法 -

CREATE OR REPLACE TRIGGER FORECAST_TRIGGER
AFTER INSERT ON FORECAST_TEST_DATA
AS
BEGIN
INSERT INTO PRODUCT_TEST_DATA
(PROD_NUM, MONTH, STORE_TYPE, PRODUCT_KEY, CATEGORY, BRAND_NAME, COLOUR)
SELECT
:new.PROD_NUM, :new.MONTH, :new.STORE_TYPE, :new.PRODUCT_KEY,
:new.CATEGORY, :new.BRAND_NAME, :new.COLOUR
FROM PRODUCT_TEST_DATA
WHERE :new.PROD_NUM = PROD_NUM;
END;

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2015-01-29
    • 2014-06-28
    • 1970-01-01
    • 2020-07-15
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多