我有这个存储过程,已经工作了一段时间
CREATE PROCEDURE `ProjectFromTemplate`(
IN TemplateID INT,
IN NewProjectID INT
)
BEGIN
INSERT INTO Project_Stage
(
ProjectID,
StageID,
StageIndex,
Time
)
(
SELECT
NewProjectID,
StageID,
StageIndex,
Time
FROM Project_Stage
WHERE ProjectID = TemplateID
);
END
但我决定在表中添加另一列,但我没有相应地更新过程。我希望该过程能够处理我添加的任何新行。我需要像这样的伪SQL
CREATE PROCEDURE `ProjectFromTemplate`(
IN TemplateID INT,
IN NewProjectID INT
)
BEGIN
INSERT INTO Project_Stage
(
ProjectID,
*
)
(
SELECT
NewProjectID,
*
FROM Project_Stage
WHERE ProjectID = TemplateID
);
END
有没有办法在MySQL中表达类似“所有后续行”的内容?
答案 0 :(得分:0)
在INSERT
中省略列条款以尽量减少代码更改,但您必须从Project_Stage
拼出其余列,除非它不包含ProjectID
柱。如果没有,那么你的好。
注意:在更改表之后,您可能仍需要重新编译(我不确定MySQL如何处理模式更改和编译过程)。
CREATE PROCEDURE `ProjectFromTemplate`(
IN TemplateID INT,
IN NewProjectID INT
)
BEGIN
INSERT INTO Project_Stage
SELECT
NewProjectID,
...
the rest of the Project_Stage columns you want go here
...
FROM Project_Stage
WHERE ProjectID = TemplateID
);
END