如果不存在则添加约束

问题描述 投票:0回答:2

我想将“检查”约束添加到某个表,但首先我必须检查该约束是否存在。我的 SQL 脚本中有一些错误。正确的做法是什么?

   ALTER TABLE public.ELEMENTS ADD CONSTRAINT IF NOT EXISTS elements_check CHECK ((t1_id IS NOT NULL) OR (t2_id IS NOT NULL));
sql postgresql constraints alter-table
2个回答
1
投票

根据手册

  1. ALTER TABLE ... DROP CONSTRAINT IF EXISTS
    确实存在
  2. ALTER TABLE ... ADD CONSTRAINT IF NOT EXISTS
    不存在

所以你必须在2.之前执行1.:

ALTER TABLE public.ELEMENTS DROP CONSTRAINT IF EXISTS elements_check ;

ALTER TABLE public.ELEMENTS ADD CONSTRAINT elements_check CHECK ((t1_id IS NOT NULL) OR (t2_id IS NOT NULL));

0
投票

我使用此语句来检查 SQL Server 中是否存在主键。

SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'PrimaryKeyName') AND type in (N'PK') AND parent_object_id = OBJECT_ID(N'TableName')
© www.soinside.com 2019 - 2024. All rights reserved.