两个表之间的存储过程?

时间:2016-07-28 15:54:56

标签: mysql sql stored-procedures mysql-workbench

我们说我有两张桌子,桌子一张桌子和一张桌子。

表-a包含以下列:product_id,mission_id,mission_status,mission_source,mission_destinition。

表-b有两列:product_id,location_id。

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

1 个答案:

答案 0 :(得分: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