查询将一个表中的类似数据插入另一个SQL

时间:2018-02-15 08:35:12

标签: sql

我有一个名为Item的表,它有列

ID, Code, Description, Cost, Quantity, Barcode, Pack, Bin

我创建了另一个名为Stock with columns

的表
ID, Code, Description

我想创建一个触发器或存储过程,每次在Item表中创建新产品时,它都会自动更新我的stock表,只包含列(ID,Code,Description)。我想这会发生在用户从系统前端创建产品后,一旦更新了Item表,它也会更新stock表。我已经尝试过下面的脚本并且它一直告诉我无效的列(代码,描述)< / p>

INSERT stock (Code, Description)
SELECT DISTINCT Code, Description
FROM Item
WHERE
   NOT EXISTS (SELECT Code, Description FROM Item)

请帮助解决这个谜团,因为两个表中都有列

3 个答案:

答案 0 :(得分:0)

我认为你应该使用它。

NOT EXISTS可以判断子查询中是否存在行。

INSERT INTO 
    stock (Code, Description)
SELECT 
    Code, Description
FROM 
    Item
WHERE
   NOT EXISTS 
   (
       SELECT Code, Description FROM stock 
       WHERE 
            stock.Code = Item.Code
        AND 
            stock.Description = Item.Description
   )

答案 1 :(得分:0)

此操作将由触发器执行,但请添加您的DBMS,因为它的主体可能因不同的DBMS而不同。

您的查询将是:

INSERT stock (Code, Description)
SELECT DISTINCT Code, Description
FROM item
WHERE
   NOT EXISTS (SELECT 'stock' FROM stock where Stock.code = item.code
              and stock.description = item.description)

答案 2 :(得分:0)

以下代码对您有所帮助,

CREATE TRIGGER trigger_UpdateStockDetails ON Item
FOR INSERT AS
BEGIN
    INSERT INTO 
    Stock 
    (
        Code,
        Description
    )
    SELECT 
        Code,
        Description
    FROM 
        INSERTED
    WHERE
    NOT EXISTS 
    (
       SELECT 
           Code,
           Description 
       FROM 
           Stock 
       WHERE 
           Stock.Code = INSERTED.Code
       AND 
           Stock.Description = INSERTED.Description
    )
END