我们说我有两张桌子,桌子一张桌子和一张桌子。
表-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 ,我该如何编写存储过程?
答案 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