如果下面的子查询没有找到记录,它返回 null 并设置 action_batch_id。如果子查询没有返回记录,是否有可能让整个查询失败/退出?
UPDATE action_batch_items
SET action_batch_id = (SELECT id FROM action_batches WHERE id = '123'
AND batch_count < 1000 AND batch_size < 100000)
WHERE id = 1234567
更新:这是结构(它是 ActiveRecord)
CREATE TABLE "public"."action_batches" (
"id" int8 NOT NULL,
"action_batch_container_id" int8 NOT NULL,
"action_message" json,
"adaptor" json,
"batch_count" int4 DEFAULT 0,
"batch_size" int8 DEFAULT 0
)
CREATE TABLE "public"."action_batch_items" (
"id" int8 NOT NULL,
"action_batch_id" int8,
"config" json
)
最佳答案
create or replace function raise_error(text) returns int as $$
begin
raise exception '%', $1;
return -1;
end; $$ language plpgsql;
然后
action_batch_id = coalesce((select id ...), raise_error('No data'));
关于sql - 如果子查询返回 null,则 SQL 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35495928/