如何使用触发器从 2 个不同的表中插入数据

问题描述 投票:0回答:1

我是编码新手,目前正在学习 SQL Server 2019 中的数据库

我有3张桌子

OrderInfo
EmployeeSales
SalesInfo

OrderInfo
有以下列:

OrderId, customerId, EmployeeId, ProductId, ShipAddress

SalesInfo
,我有这些专栏:

OdrId, ProdId, ProdName, ProdQuantity, ProdPrice, ShipAdd

EmployeeSales
以下列

OdrId, EmpId, ProductId, ProductName, ProductQuan, ProductPrice

我想使用触发器自动插入数据。

Empid
OdrId
应该从
OrderInfo
插入,
EmployeeSales
的其余细节应该从
SalesInfo
插入。如何实现自动插入和更新?

我可以使用删除级联自动删除

sql-server database triggers sql-update sql-insert
1个回答
0
投票

听起来你真的只是想要一个

VIEW
,这避免了你必须维护另一个表并保持同步。

CREATE OR ALTER VIEW dbo.EmployeeSales
WITH SCHEMABINDING
AS

SELECT
  o.OrderId,
  o.EmpId,
  s.ProductId,
  s.ProductName,
  s.ProductQuan,
  s.ProductPrice
FROM dbo.OrderInfo o
JOIN dbo.SalesInfo s
  ON s.OrderId = o.OrderId
 AND s.ProductId = o.ProductId;

如果您在查询此视图时遇到性能问题,您应该确保您的表在连接列上正确索引。如果这没有帮助,那么您实际上可以索引视图本身。


我注意到你的桌子设计有点奇怪。

OrderInfo
SalesInfo
似乎都表示关系
Order_Product
,但
OrderInfo
包含的信息也与整个订单有关。所以我希望
ProductId
OrderInfo
中删除,这样每个订单只有一行,而不是每个产品。

© www.soinside.com 2019 - 2024. All rights reserved.