分享方式:


sp_unbindrule (Transact-SQL)

適用於:SQL Server

從目前資料庫中的數據行或別名數據類型解除系結規則。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 建議您改用 ALTER TABLE 或 CREATE TABLE 語句中的 DEFAULT 關鍵詞來建立預設定義。

Transact-SQL 語法慣例

語法

sp_unbindrule
    [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

引數

[ @objname = ] N'objname'

數據表和數據行的名稱,或規則從中取消系結的別名數據類型。 @objname為 nvarchar(776),沒有預設值。 SQL Server 會先嘗試將兩部分識別符解析為數據行名稱,然後再解析為別名數據類型。 從別名數據類型解除系結規則時,具有相同規則之數據類型的任何數據行也會解除系結。 系結至這些數據類型之規則的數據行不會受到影響。

注意

@objname可以包含括號[]做為分隔標識符字元。 如需詳細資訊,請參閱 資料庫標識符

[ @futureonly = ] 'futureonly'

只有在將規則與別名數據類型解除系結時使用。 @futureonly為 varchar(15),預設值為 NULL。 當@futureonlyfutureonly,該數據類型的現有數據行不會遺失指定的規則。

傳回碼值

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';