更新插入查询

Update an insert query

我是数据库新手,所以我的问题可能是错误的。

我试图实现的是从 table 中获取行,编辑两列并插入到相同的 table。

INSERT INTO table_name 
    (SELECT * 
     FROM table_name 
     WHERE TRANSACTION_ID = 1 );

但在添加插入之前我想更新字段

UPDATE table_name 
SET UPDATED_DATE = '20161208', 
    STATUS = 'updated' 
WHERE TRANSACTION_ID = 1;

需要写存储过程来实现吗?

如果是这样应该如何?

存储过程通常用于 SQL 操作(可重用代码),这些操作需要重复执行,并向其传递动态值(如果需要)。

如果您只是想运行 这两个查询进行一次更新操作,不建议使用存储过程。您可以 运行 这 2 个命令作为单个事务并将事务作为单个原子事务提交。

您正在学习数据库。当您使用 INSERT 时,您应该 总是 列出列,除非您确切地知道自己在做什么。因此,列出显式列并输入您想要的值:

INSERT INTO table_name( . . ., UPDATED_DATE, STATUS)
    SELECT . . ., '20161208', 'updated'
    FROM table_name
    WHERE TRANSACTION_ID = 1;

您可以在一条语句中完成此操作。

您想实现的是在您的 table 中复制一行并修改此复制行的某些字段?

如果是这样,你需要做这样的事情(不要把 TRANSACTION_ID 放在字段列表中。通常它应该自动创建一个 ID_TRANSACTION 2 如果你有身份):

INSERT INTO TableName (field1, field2, ...)
SELECT * FROM table_name WHERE TRANSACTION_ID = 1

然后:

UPDATE table_name SET UPDATED_DATE = '20161208', STATUS = 'updated' WHERE TRANSACTION_ID = 2;