使用where子句触发

时间:2020-07-19 20:33:20

标签: stored-procedures triggers

stackoverflow的新手。

由于我现在使用的绘图软件已链接到SQL数据库,因此我是一名由起草员转为SQL开发人员。我正在尝试了解触发器和存储过程。我使用提供图纸的多个客户数据库。我公司正在尝试为我们通常使用的一些较常见的设备建立零件库数据库。

有人告诉我,您可以设置触发器,该触发器将根据where子句自动将数据从一个数据库转移到另一个数据库。数据库全部都在一台服务器上。

所以我的问题是说我有20列适用于特定零件,我想自动从库数据库中提取15列,因为其他5列是针对客户的。我希望在LibraryItemNumber列上设置where子句,因为该子句将在每个数据库中设置。

因此,我已经能够创建一个after after触发脚本,并且可以基于where子句创建一个将数据从一个数据库复制到另一个数据库的脚本,如下所示:

CREATE TRIGGER [dbo].[DELETED] on [dbo].[PID_Components_MECHANICAL]
AFTER DELETE
AS
BEGIN

    DECLARE @COLUMN1_ VARCHAR(MAX);
    DECLARE @COLUMN2_ VARCHAR(MAX);
    DECLARE @COLUMN3_ VARCHAR(MAX);
    DECLARE @COLUMN4_ VARCHAR(MAX);
    DECLARE @COLUMN5_ VARCHAR(MAX); 

    SET @COLUMN1_ = (SELECT COLUMN1_ from deleted);
    SET @COLUMN2_ = (SELECT COLUMN2_ FROM deleted);
    SET @COLUMN3_ = (SELECT COLUMN3_ FROM deleted);
    SET @COLUMN4_ = (SELECT COLUMN4_ FROM deleted);
    SET @COLUMN5_ = (SELECT COLUMN5_ FROM deleted);

    INSERT INTO MECHANICAL_HISTORY(COLUMN1_,COLUMN2_,COLUMN3_,COLUMN4_,COLUMN5_,TIME_DELETED)
    VALUES(@COLUMN1_,@COLUMN2_,@COLUMN3_,@COLUMN4_,@COLUMN5_,GETDATE())
END

UPDATE [TEST].[dbo].[PID_Components_MECHANICAL]
SET 
    [COLUMN1_] = (SELECT [COLUMN1_] FROM [LIBRARY].[dbo].[PID_Components_MECHANICAL] WHERE ICM_LIBRARY_ITEM_NUMBER_ = '123456'),
    [COLUMN2_] = (SELECT [COLUMN2_] FROM [LIBRARY].[dbo].[PID_Components_MECHANICAL] WHERE ICM_LIBRARY_ITEM_NUMBER_ = '123456'),
    [COLUMN3_] = (SELECT [COLUMN3_] FROM [LIBRARY].[dbo].[PID_Components_MECHANICAL] WHERE ICM_LIBRARY_ITEM_NUMBER_ = '123456'),
    [COLUMN4_] = (SELECT [COLUMN4_] FROM [LIBRARY].[dbo].[PID_Components_MECHANICAL] WHERE ICM_LIBRARY_ITEM_NUMBER_ = '123456'),
    [COLUMN5_] = (SELECT [COLUMN5_] FROM [LIBRARY].[dbo].[PID_Components_MECHANICAL] WHERE ICM_LIBRARY_ITEM_NUMBER_ = '123456')
WHERE LIBRARYITEMNUMBER ='123456'  

1。)那么,如何创建一个触发器来基于一次LibraryItemColumn更新来更新所需的列?

每个零件可能有多达20个不同的项目编号。

2。)存储过程是完成此命令或其他一些SQL命令的更好方法吗?

我花了数小时搜索和观看视频,但显然没有得到。任何帮助都是非常感激的。

0 个答案:

没有答案
相关问题