t-sql 销售 库存触发器
时间: 2024-02-04 12:03:20 浏览: 60
在 T-SQL 中,可以使用触发器来在销售或库存发生变化时自动更新相关的数据。以下是一个示例触发器,当销售记录被插入时,触发器会自动减少相应产品的库存数量:
```
CREATE TRIGGER update_inventory
ON Sales
AFTER INSERT
AS
BEGIN
UPDATE Products
SET Quantity = Quantity - i.Quantity
FROM Products p
INNER JOIN inserted i ON p.ProductID = i.ProductID
END
```
此触发器将在 Sales 表中插入新记录后执行,并使用 INNER JOIN 将 Sales 表中的产品 ID 与 Products 表中的产品 ID 进行匹配来更新库存数量。你可以根据实际情况修改该触发器,例如在更新完库存数量后还想记录库存变化历史。
相关问题
T-sql 创建一个触发器,当向产品表中插入产品记录时,如果插入产品的库存>100, 则将库存设置为100
在SQL Server中,你可以创建一个名为`Trg_UpdateProductStock`的触发器,用于在向产品表`Products`插入新记录时自动调整库存。以下是创建这个触发器的T-SQL语法:
```sql
CREATE TRIGGER Trg_UpdateProductStock
ON Products
AFTER INSERT
AS
BEGIN
DECLARE @NewStock INT = (SELECT Stock FROM inserted WHERE ProductID = scope_identity())
IF @NewStock > 100
BEGIN
UPDATE inserted
SET Stock = 100
END
END;
```
在这个触发器中:
- `CREATE TRIGGER`开始创建触发器。
- `Trg_UpdateProductStock`是触发器的名称,可以根据需要自定义。
- `ON Products`指定触发器关联的表是`Products`。
- `AFTER INSERT`表示在插入新行之后执行触发器。
- `AS`开始触发器的执行部分。
- `DECLARE @NewStock INT`声明一个变量,存储新插入的产品的库存值。
- `IF @NewStock > 100`是一个条件判断,如果新库存大于100,则执行更新操作。
- `UPDATE inserted`使用`inserted`临时表(包含所有刚插入的新数据)进行更新。
- `SET Stock = 100`将库存设为100。
请写出对销售表创建下列两个触发器的T-SQL语句:①对销售表插入销售记录时,能触发该触发器,使得图书表中的库存量相应减少。②对销售表删除销售记录时,能触发该触发器,使得图书表中的库存量相应增加。
触发器1:对销售表插入销售记录时,减少图书表中库存量
```sql
CREATE TRIGGER trigger_sale_insert ON sales
AFTER INSERT
AS
BEGIN
UPDATE books
SET stock = stock - inserted.quantity
FROM books
INNER JOIN inserted ON books.book_id = inserted.book_id
END
```
触发器2:对销售表删除销售记录时,增加图书表中库存量
```sql
CREATE TRIGGER trigger_sale_delete ON sales
AFTER DELETE
AS
BEGIN
UPDATE books
SET stock = stock + deleted.quantity
FROM books
INNER JOIN deleted ON books.book_id = deleted.book_id
END
```
阅读全文