如果不存在则添加约束

发布于 2025-01-14 06:24:31 字数 216 浏览 4 评论 0原文

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

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

I want to add the 'check' constraint to some table, but firstly I have to check if that constraint exists. I have some error in my SQL script. What is the corret way to do it ?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灰色世界里的红玫瑰 2025-01-21 06:24:32

我使用此语句来检查 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')

I use this statement to check wherever a Primary Key exists or not in 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')
装迷糊 2025-01-21 06:24:31

根据手册

  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));

According to the manual :

  1. ALTER TABLE ... DROP CONSTRAINT IF EXISTS do exist
  2. ALTER TABLE ... ADD CONSTRAINT IF NOT EXISTS doesn't exist

so you have to execute 1. before 2. :

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));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文