次の方法で共有


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'

テーブルと列の名前、または規則のバインド解除元の別名データ型。 @objnamenvarchar(776)で、既定値はありません。 SQL Server は、最初に 2 部構成の識別子を列名に解決し、次にデータ型のエイリアスを作成しようとします。 別名データ型からルールをバインド解除すると、同じルールを持つデータ型のすべての列もバインド解除されます。 ただし、同じデータ型でも、ルールが直接バインドされている列には影響はありません。

Note

@objname は、区切り識別子文字として [] 角かっこを含めることができます。 詳細については、「 Database 識別子」を参照してください。

[ @futureonly = ] 'futureonly'

エイリアス データ型からルールのバインドを解除する場合にのみ使用されます。 @futureonlyvarchar(15) で、既定値は NULL です。 @futureonlyfutureonlyされている場合、そのデータ型の既存の列は、指定した規則を失うことはありません。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

ルールのテキストを表示するには、ルール名をパラメーターとして sp_helptext 実行します。

規則がバインドされていない場合、規則が列にバインドされている場合は sys.columns テーブルから、規則がエイリアス データ型にバインドされている場合は sys.types テーブルからバインディングに関する情報が削除されます。

別名データ型から規則がバインド解除されている場合、その別名データ型を持つ列からもバインド解除されます。 この規則は、ALTER TABLE ステートメントの ALTER COLUMN 句によって後でデータ型が変更された列にもバインドされる場合があります。 sp_unbindrule を使用して列名を指定して、これらの列から規則を明示的にバインド解除する必要があります。

アクセス許可

テーブル列からルールをバインド解除するには、そのテーブルに対する ALTER 権限が必要です。 別名データ型から規則をバインド解除するには、型に対する CONTROL 権限、または型が属するスキーマに対する ALTER 権限が必要です。

A. 列からルールのバインドを解除する

次の例では、employees テーブルのstartdate列からルールのバインドを解除します。

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部分では、オブジェクトに 2 つのピリオドが含まれています。1 つ目はテーブル名の一部で、2 番目の部分はテーブル名と列名を区別します。

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