我有一个名为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)
请帮助解决这个谜团,因为两个表中都有列
答案 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