sp_unbindrule (Transact-SQL)
適用於:SQL Server
從目前資料庫中的數據行或別名數據類型解除系結規則。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 建議您改用 ALTER TABLE 或 CREATE TABLE 語句中的 DEFAULT 關鍵詞來建立預設定義。
語法
sp_unbindrule
[ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
引數
[ @objname = ] N'objname'
數據表和數據行的名稱,或規則從中取消系結的別名數據類型。 @objname為 nvarchar(776),沒有預設值。 SQL Server 會先嘗試將兩部分識別符解析為數據行名稱,然後再解析為別名數據類型。 從別名數據類型解除系結規則時,具有相同規則之數據類型的任何數據行也會解除系結。 系結至這些數據類型之規則的數據行不會受到影響。
注意
@objname可以包含括號[]
做為分隔標識符字元。 如需詳細資訊,請參閱 資料庫標識符。
[ @futureonly = ] 'futureonly'
只有在將規則與別名數據類型解除系結時使用。 @futureonly為 varchar(15),預設值為 NULL
。 當@futureonly 為futureonly
時,該數據類型的現有數據行不會遺失指定的規則。
傳回碼值
0
(成功) 或 1
(失敗)。
備註
若要顯示規則的文字,請使用規則名稱作為 參數來執行 sp_helptext
。
當規則未系結時,如果規則系結至數據行,則會從 sys.columns
數據表中移除系結的相關信息,如果規則系結至別名數據類型,則會從 sys.types
數據表中移除。
當規則從別名數據類型取消系結時,它也會從具有該別名數據類型的任何數據行取消系結。 規則可能仍然系結至數據行,其數據類型後來由 ALTER TABLE 語句的 ALTER COLUMN 子句變更,您必須使用 並指定數據行名稱,明確地解除系結這些數據 sp_unbindrule
行的規則。
權限
若要將規則從數據表數據行解除系結,需要數據表的 ALTER 許可權。 若要從別名數據類型解除系結規則,需要類型所屬架構的CONTROL許可權或ALTER許可權。
範例
A. 從數據行解除系結規則
下列範例會將規則與 startdate
數據表的數據 employees
行解除系結。
EXEC sp_unbindrule 'employees.startdate';
B. 從別名數據類型解除系結規則
下列範例會將規則與別名數據類型 ssn
解除系結。 它會從該類型的現有和未來數據行解除系結規則。
EXEC sp_unbindrule ssn;
C. 使用futureonly_flag
下列範例會將規則與別名數據類型 ssn
解除系結,而不會影響現有的 ssn
數據行。
EXEC sp_unbindrule 'ssn', 'futureonly';
D. 使用分隔標識碼
下列範例示範在 @objname 參數中使用分隔標識碼。 請注意句點做為數據表名稱的一部分。 在 sp_bindrule
部分,物件包含兩個句點;第一個句號是數據表名稱的一部分,而第二個會區分數據表名稱與數據行名稱。
CREATE TABLE [t.4] (c1 int);
GO
CREATE RULE rule2 AS @value > 100;
GO
EXEC sp_bindrule rule2, '[t.4].c1'
GO
EXEC sp_unbindrule '[t.4].c1';