Sql server 2008 r2 使用数据库触发器移动记录

Sql server 2008 r2 使用数据库触发器移动记录,sql-server-2008-r2,Sql Server 2008 R2,我不熟悉数据库触发器的使用,所以我想在这里指出正确的方向。我想触发执行新发票的“插入”或我的发票表的“余额到期日”的“更新”,以获取发票中的供应商ID,抓取供应商表中的供应商行,并将一些数据从该行移动到另一个表中,以便发货标签。到目前为止,这就是我所得到的,但我有点不知所措,不知该从这里走到哪里 CREATE TRIGGER trSetShippingLabels ON tblInvoices AFTER Insert, Update AS INSERT INTO tblShippingLabe

我不熟悉数据库触发器的使用,所以我想在这里指出正确的方向。我想触发执行新发票的“插入”或我的
发票
表的“余额到期日”的“更新”,以获取
发票
中的
供应商ID
,抓取
供应商
表中的
供应商
行,并将一些数据从该行移动到另一个表中,以便
发货标签
。到目前为止,这就是我所得到的,但我有点不知所措,不知该从这里走到哪里

CREATE TRIGGER trSetShippingLabels
ON tblInvoices
AFTER Insert, Update
AS
INSERT INTO tblShippingLabels
SELECT VendorName, VendorAddress, VendorCity, VendorState, VendorZipCode
FROM tblVendors
JOIN tblInvoices i on i.VendorID = Vendors.VendorID

你很接近。你只需要在你的触发器中使用。该表可以在触发器中访问(或与output子句结合使用),并保存针对相关永久表执行的最后一条语句插入的所有数据。如果您想删除触发器中的某些数据,也会有一个相应的“已删除”表

CREATE TRIGGER trSetShippingLabels
ON tblInvoices
AFTER Insert,Update
AS
INSERT INTO tblShippingLabels
SELECT VendorName, VendorAddress, VendorCity, VendorState, VendorZipCode
FROM Vendors
JOIN Inserted i on i.VendorID = Vendors.VendorID

你很接近。你只需要在你的触发器中使用。该表可以在触发器中访问(或与output子句结合使用),并保存针对相关永久表执行的最后一条语句插入的所有数据。如果您想删除触发器中的某些数据,也会有一个相应的“已删除”表

CREATE TRIGGER trSetShippingLabels
ON tblInvoices
AFTER Insert,Update
AS
INSERT INTO tblShippingLabels
SELECT VendorName, VendorAddress, VendorCity, VendorState, VendorZipCode
FROM Vendors
JOIN Inserted i on i.VendorID = Vendors.VendorID

我知道插入的东西,但不确定它是否也适用于更新。@AndyLink是的。从MSDN链接:
更新事务类似于删除操作,然后是插入操作;先将旧行复制到已删除的表中,然后将新行复制到触发器表和插入的表中。
Thank you@EstericScreenName!:)我知道插入的东西,但不确定它是否也适用于更新。@AndyLink是的。从MSDN链接:
更新事务类似于删除操作,然后是插入操作;先将旧行复制到已删除的表中,然后将新行复制到触发器表和插入的表中。
Thank you@EstericScreenName!:)