有几种不同的方法来完成这一点。正如有人在上面说过的,触发器可能是要走的路。这里有一个简单的脚本可以在这种情况下工作。
--Create test tables
CREATE TABLE #TEMP1
(
product_id int,
mission_Id int,
mission_status int,
mission_source int,
mission_destination VARCHAR(50)
);
CREATE TABLE #TEMP2
(
product_id int,
location_id VARCHAR(50)
);
--Test data
INSERT INTO #TEMP1
VALUES(1,1,1,2,'Mars')
INSERT INTO #TEMP1
VALUES(2,1,1,2,'Jupiter')
INSERT INTO #TEMP1
VALUES(3,1,1,2,'Venus')
INSERT INTO #TEMP1
VALUES(4,1,1,2,'Saturn')
--Check for mission_status of 1
SELECT product_id, mission_destination FROM #TEMP1 WHERE mission_status = 1
IF @@ROWCOUNT > 0
BEGIN
INSERT INTO #TEMP2 (product_id,location_id) SELECT product_id, mission_destination FROM #TEMP1 WHERE mission_status = 1
DELETE FROM #TEMP1 WHERE mission_status = 1
END
SELECT * FROM #TEMP1
SELECT * FROM #TEMP2
此外,这听起来更像是一个'TRIGGER'的工作,而不是'STORED PROCEDURE'。 – Siyual
我建议切换步骤的顺序。另外,表b没有任务目标字段。 –