2012-08-30 115 views
1

下探唯一约束当拖放在Sybase Central唯一约束,显示下降语句如下;按名称

ALTER TABLE "DBA"."enr_rds_heating_control_validation_t" DROP CONSTRAINT "ASA826"; 

在此放弃的约束ASA826来自SYS.SYSCONSTRAINT视图,其中值来自constraint_name列。

这里的问题是,这是一个由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约束到位约束名,并接收指示约束没有发现错误。

如何退出使用索引名称,而不是约束名的唯一约束?

+0

也许这并不能回答你的问题,但你应该一直为你创建的每个约束分配一个明确的名字,这样你就不会遇到这样的情况。 –

回答

1

我不认为你可以删除就好像它是一个指数的约束,即使身体的Sybase使用一个索引,你看到它放在桌子上的所报告的sp_help的索引。

DROP INDEX仅适用于具有CREATE INDEX创建的索引。用在约束你:因为“C”是一种约束

不能使用“abe.c” DROP。使用ALTER TABLE。

听起来好像你想把Sybase Central创建的约束当作SQL,然后使用批量的sql,而不是Sql所涉及的数据库 - 是不是你无法做到的答案?

只要你让你的脚本使用这个Sql Central输出“使用”正确的数据库,你就没事了。

我无法完全理解你在做什么,但是看起来你必须坚持使用SQL Central产生的东西。

或者后处理Sql Central Sql和后缀所有约束名称与db_id()?这是一个疯狂的猜测虽然

+0

是的,你是对的。要删除约束条件,您需要使用alter table :) –