0
他のテーブルのいくつかのIDに基づいて、ポストグルのテーブルにチェック制約を作成しようとしています。私はあなたがチェックで選択して直接行うことはできません知っているしかし、私は変数にIDを取得し、チェックでそれらを使用することは可能だろうと思ったが、どちらも動作していないようです。これは私が持っているものです。postgresのチェックで宣言された変数を使用することはできますか?
DO $$
DECLARE
assigned uuid := (select "WorkOrderStatusCodeId" from "WorkOrdersV2"."WorkOrderStatusCodes" where "Code" = 'A');
onHold uuid := (select "WorkOrderStatusCodeId" from "WorkOrdersV2"."WorkOrderStatusCodes" where "Code" = 'O');
BEGIN
ALTER TABLE "WorkOrdersV2"."WorkOrders" ADD CHECK (("WorkOrderStatusCodeId" not in (assigned, onHold) and "DisplayOrder" is null) or ("WorkOrderStatusCodeId" in (assigned, onHold) and "DisplayOrder" is not null));
END $$;
それは私にエラーを与えている:ERROR: column "assigned" does not exist
はチェック制約でこれを行う方法はありますか私はトリガを使用する必要がありますか?
を:実行割り当てられ|| 'ALTER TABLE "WorkOrdersV2を" "WorkOrdersは" CHECKを追加((ではない(中に "WorkOrderStatusCodeId"' || ( '||割り当てられた||'、 '|| onHold ||')、および "DisplayOrder"はnullではありません)); ' @AbdelP。 –
あなたは正しいと思いますが、割り当てられたとonHoldのまわりに単一引用符がありません。これを答えて引用符を追加して回答としてマークします – GBreen12
試したが、一重引用符で囲まれた変数の値を取ることはありません –