【问题标题】:Stored Procedure between two tables?两个表之间的存储过程?
【发布时间】:2016-12-03 03:16:27
【问题描述】:

假设我有两个表,table-a 和 table-b。

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

Table-b 有两列:product_id、location_id。

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

【问题讨论】:

  • 另外,这听起来更像是TRIGGER 的工作,而不是STORED PROCEDURE
  • 我建议切换步骤的顺序。此外,表 b 没有任务目标字段。

标签: mysql sql stored-procedures mysql-workbench


【解决方案1】:

有几种不同的方法可以做到这一点。正如上面有人所说,触发器可能是要走的路。这是一个可能适用于这种情况的简单脚本。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多