2016-07-28 69 views
-2

比方说,我有两个表,表a和表b。两个表之间的存储过程?

表-a具有以下列:product_id,mission_id,mission_status,mission_source,mission_destinition。

表-b有两列:product_id,location_id。

如果我要编写一个存储过程,从table-a中删除一行,其中mission_status = 1,然后自动在table-b中创建一个新行,其中包含刚刚在表格中删除的行中的product_id和mission_destination。 a,我将如何编写存储过程?

+2

此外,这听起来更像是一个'TRIGGER'的工作,而不是'STORED PROCEDURE'。 – Siyual

+0

我建议切换步骤的顺序。另外,表b没有任务目标字段。 –

回答

0

有几种不同的方法来完成这一点。正如有人在上面说过的,触发器可能是要走的路。这里有一个简单的脚本可以在这种情况下工作。

--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