更新插入查询
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;
我是数据库新手,所以我的问题可能是错误的。
我试图实现的是从 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;