【发布时间】:2012-08-30 16:15:43
【问题描述】:
在 Sybase Central 中删除唯一约束时,显示的删除语句如下;
ALTER TABLE "DBA"."enr_rds_heating_control_validation_t" DROP CONSTRAINT "ASA826";
ASA826 在此处删除的约束来自 SYS.SYSCONSTRAINT 视图,其中值来自约束名称列。
这里的问题是,这是 Sybase 分配给约束的唯一标识符,并且仅对当前数据库有效,因此当针对另一个数据库运行时,此约束可能 a) 不存在或 b) 完全是不同的约束。
然而,在创建约束时,我们将其命名为 enr_rds_heating_control_validation_t UNIQUE (enr_rds_heating_type_id,enr_rds_heating_control_id),该值可以在 index_name 列的 SYS.SYSINDEX 视图中看到,并且该值在所有数据库中都将保持唯一。
我已尝试删除通过 index_name 传递的约束来代替约束名称,并收到指示未找到约束的错误。
如何使用索引名称而不是约束名称来删除唯一约束?
【问题讨论】:
-
也许这不能回答您的问题,但您应该始终为您创建的每个约束分配一个明确的名称,这样您就不会遇到这样的情况。
标签: sql constraints sqlanywhere