2016-07-28 95 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 
相關問題