gpt4 book ai didi

sql - 在不知道约束名称的情况下删除表列上的唯一约束

转载 作者:行者123 更新时间:2023-12-04 23:09:29 24 4
gpt4 key购买 nike

在 Oracle 10g 中,如何在不知道约束名称的情况下删除列上的唯一约束(例如,系统生成的名称,跨数据库实例不一定相同)?删除和重新创建表不是一种选择。是否可以?

最佳答案

您可以使用以下命令检索约束的名称:

SELECT CONSTRAINT_NAME
FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'xxx'
AND CONSTRAINT_TYPE = 'U'

例如,您可以创建一个存储过程来执行前面的 sql,将其结果存储在一个变量中并在 ALTER TABLE DROP CONSTRAINT 中使用该变量。

编辑:例如:
BEGIN
FOR r IN (
SELECT TABLE_NAME, CONSTRAINT_NAME
FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'xxx'
AND CONSTRAINT_TYPE = 'U') LOOP
EXECUTE IMMEDIATE REPLACE(REPLACE(
'ALTER TABLE #TABLE# DROP CONSTRAINT #CON#'
,'#TABLE#',r.TABLE_NAME)
,'#CON#',r.CONSTRAINT_NAME);
END LOOP;
END;

关于sql - 在不知道约束名称的情况下删除表列上的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3944764/

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