sql - 使用单个 SQL 命令更新表并显示更新的行

标签 sql postgresql sql-update sql-returning

我需要你在 PostgreSQL 方面的帮助。我有一个家庭作业,我必须更新表的一列并显示所有已更新的信息,但我必须使用一个命令来完成所有这些。更糟糕的是,我只能使用基本的子句,如 SELECT、UPDATE、SET、WHERE 等。

这可能吗?我没有找到任何例子。

我尝试了几种组合,例如:

SELECT * FROM customer 
(UPDATE custumer SET bithdate = bithdate + INTERVAL '1 DAY'
 WHERE   bithcity = 'New York');

这没有用!

最佳答案

因为这是作业,所以我给你留点东西。

单个SQL语句

开始阅读 RETURNING clause of the UPDATE command in the manual .

另一种选择(对于更复杂的场景)是 data-modifying CTE .为此,您仍然需要 RETURNING 子句。

或者你可以 create a function您可以在单个语句中调用,但这会违反您仅使用简单 DML 命令的要求。

单笔交易

如果允许多个语句,另一种选择是简单的 UPDATE 加上简单的 SELECT 包装到 transaction 中.

关于sql - 使用单个 SQL 命令更新表并显示更新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992365/

相关文章:

PHP MySQL "UPDATE"

php - 在 mysql 中编写此查询时出现问题(在论坛中标记已读消息)

c# - PostgreSQL 不保存完整的 DateTimeOffset

java - 集成测试从 gradle build 运行而不是从 intellij 运行?

postgresql - 如何在 PostgreSQL 中将表从服务器复制到另一个?

javascript - AngularJS 编辑数据/表单

mysql - 找不到列 : 1054 Unknown column - NO TYPOS NOR WRONG ' ` "

mysql - 数据库建模 - 具有相同行为但数据类型不同的列

sql - 使用编译错误创建的触发器

c# - 不允许将 nvarchar 数据类型隐式转换为 varbinary (max)。使用 CONVERT 函数执行此查询