你能不知道MySQL中的架构而复制一行吗?

DOO*_*iac 8 mysql

在MySQL中复制行的一种好方法是使用INSERT INTO ... SELECT FROM语法.

例如:

INSERT INTO tblExample (col1, col2, col3)
SELECT col1, col2, col3 FROM tblExample WHERE pkey = 1234;
Run Code Online (Sandbox Code Playgroud)

这很容易和直接,但从代码维护的角度来看,这是另一个用于跟踪是否存在任何架构更改的语句.假设我在tblExample表中添加了一个额外的列col4; 现在我必须记得在我的代码中返回并更新此SQL语句.如果我没有这样做,那么我刚刚介绍了一个错误.

考虑到这一点,除了主键之外,是否有一种简单的方法来复制整行,无论模式如何?

Ran*_*eed 0

一种有点不优雅的方式:

CREATE TEMPORARY TABLE tmpTable ENGINE=MEMORY SELECT * FROM realTable WHERE pk = 'something';
UPDATE tmpTable SET pk = 'something else' ;
INSERT INTO realTable SELECT * FROM tmpTable;
Run Code Online (Sandbox Code Playgroud)