在 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)
,可以在SYS.SYSINDEX
视图中的 index_name 列中看到该值,并且该值在所有数据库中将保持唯一。
我试图删除通过 index_name 的约束来代替约束名称,并收到指示未找到约束的错误。
如何使用索引名称而不是约束名称删除唯一约束?