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 は、最初に 2 部構成の識別子を列名に解決し、次にデータ型のエイリアスを作成しようとします。 別名データ型からルールをバインド解除すると、同じルールを持つデータ型のすべての列もバインド解除されます。 ただし、同じデータ型でも、ルールが直接バインドされている列には影響はありません。
Note
@objname は、区切り識別子文字として []
角かっこを含めることができます。 詳細については、「 Database 識別子」を参照してください。
[ @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. 列からルールのバインドを解除する
次の例では、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';