gpt4 book ai didi

oracle11g - 在表中添加约束之前检查(oracle)

转载 作者:行者123 更新时间:2023-12-04 14:51:19 24 4
gpt4 key购买 nike

我想在表中添加约束但在添加之前我必须检查约束是否存在于表中
喜欢

IF NOT EXISTS(some condition)

ADD CONSTRAINT CHK_DATES_VALID
CHECK ((DATE_NORMAL != 'n' AND DATE_NORMAL != 'N') OR
(DATE_SCHEDULED != 'n' AND DATE_SCHEDULED != 'N') OR
(DATE_WINDOW != 'n' AND DATE_WINDOW != 'N'));

在添加约束“CHK_DATES_VALID”之前,我需要检查约束是否存在
请指导我做这个条件。

最佳答案

你不能像那样使用 IF。

您需要查看系统 View ALL_CONSTRAINTS为了找出约束是否已经定义:

DECLARE 
num_rows integer;
BEGIN
SELECT count(*)
INTO num_rows
FROM all_constraints
WHERE constraint_name = 'CHK_DATES_VALID';

IF num_rows = 0 THEN
EXECUTE IMMEDIATE 'ALTER TABLE the_table
ADD CONSTRAINT CHK_DATES_VALID
CHECK ((to_upper(DATE_NORMAL) != ''N'') OR
(to_upper(DATE_SCHEDULED) != ''N'') OR
(to_upper(DATE_WINDOW) != ''N''))';
END IF;
END;
/

EXECUTE IMMEDIATE 是必需的,因为您不能直接在 PL/SQL 块中运行 DDL。

一个更简单的解决方案是简单地添加约束并捕获发生的任何错误。

关于oracle11g - 在表中添加约束之前检查(oracle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com