如何将一行中的所有列复制到除一行之外的新行中



我有这个存储过程,它已经工作了一段时间

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 中表达"所有后续行"之类的内容?

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

相关内容

最新更新