[英]dropping unique constraint by name
在Sybase Central中刪除唯一約束時,顯示的drop語句如下:
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)
可以在SYS.SYSINDEX
視圖的index_name列中看到該值,並且該值在所有數據庫中都將保持唯一。
我試圖刪除通過index_name代替約束名稱的約束,並收到一條錯誤消息,指出未找到約束。
如何使用索引名稱而不是約束名稱來刪除唯一約束?
我認為,即使Sybase物理上使用索引並且您在表上將其視為由sp_help報告的索引,也無法像將其作為索引一樣刪除約束。
DROP INDEX僅適用於使用CREATE INDEX創建的索引。 在約束條件下使用,您將獲得:
無法將DROP與'abe.c'一起使用,因為'c'是一個約束。 使用ALTER TABLE。
聽起來好像您想將Sybase Central創建的約束作為SQL,然后批量使用sql,但不要在Sql關聯的數據庫上使用-這不是您不能做到的答案嗎?
只要您使使用此Sql Central輸出的腳本“使用”正確的數據庫,就可以了。
我無法確切了解您在做什么,但是似乎您必須堅持使用SQL Central生成的內容。
否則對Sql Central Sql進行后處理,並在所有約束名稱后綴db_id()? 不過那是一個瘋狂的猜測
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.