【发布时间】:2019-10-29 15:27:52
【问题描述】:
当我在 update 语句中使用限制时,Postgres 失败
我只想更新表的第一条记录
UPDATE test1 SET name="user101" LIMIT 1;
由于我使用的是限制,因此在 postgres 中失败了;
我能做到
UPDATE test1 SET name="user101"
WHERE ID =(SELECT ID FROM test1 LIMIT 1)
但要使用上面的 sql,我应该知道列名 (ID),在我的情况下我无权访问列名。
我需要一个不需要列名但只更新第一条记录的sql语句。
更新:
我正在使用 ruby @db.exec(query) 执行查询
我们将不同的sql语句传递给调用@db.exec(query)的方法
- update table1 set t1_name = "123" limit 1;
- update table2 set something = "xyz" limit 1;
- 更新 table3 设置 som = "abc" 限制 1;
现在在致电@db.exec(query)之前
我想修改查询,使查询不会使用limit
在这种情况下,我可以访问要更新的表名、列名。但我无权访问任何其他列名 (ID)。
【问题讨论】:
-
当您无权访问列名时,您如何知道要更改列
test1? -
@a_horse_with_no_name 我已经更新了我的问题我可以访问我需要更新的表名和列名。
-
这听起来像是一个糟糕的设计——为什么你不知道你的表的主键?针对表中随机行的更新看起来很奇怪
-
这只是为了我们的测试目的,我们只想更新单个记录数据(任何记录)。
标签: postgresql