外部キーの作成、変更、および削除
SQL Server 管理オブジェクト (SMO) では、外部キーは ForeignKey オブジェクトで表現します。
SMO に外部キーを作成するには、外部キーが ForeignKey オブジェクトのコンストラクタに定義されているテーブルを指定する必要があります。このテーブルから、外部キーになる列を少なくとも 1 つ選択する必要があります。選択するには、ForeignKeyColumn オブジェクト変数を作成し、外部キーの列の名前を指定します。次に、参照先のテーブルと列を指定します。列を Columns オブジェクト プロパティに追加するには、Add メソッドを使用します。
外部キーを表す列は、ForeignKey オブジェクトの一覧は Columns オブジェクト プロパティで表されます。外部キーが参照している主キーは、ReferencedTable プロパティで指定されたテーブルにある ReferencedKey プロパティで表現します。
例
提供されているコード例を使用するには、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。詳細については、「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」または「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。
Visual Basic での外部キーの作成、変更、および削除
このコード例では、あるテーブル内の 1 つまたは複数の列から、別のテーブル内の主キー列に対する外部キー リレーションシップを作成する方法を示します。
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Declare a Table object variable and reference the Employee table.
Dim tbe As Table
tbe = db.Tables("Employee", "HumanResources")
'Declare another Table object variable and reference the EmployeeAddress table.
Dim tbea As Table
tbea = db.Tables("EmployeeAddress", "HumanResources")
'Define a Foreign Key object variable by supplying the EmployeeAddress as the parent table and the foreign key name in the constructor.
Dim fk As ForeignKey
fk = New ForeignKey(tbea, "test_foreignkey")
'Add EmployeeID as the foreign key column.
Dim fkc As ForeignKeyColumn
fkc = New ForeignKeyColumn(fk, "EmployeeID", "EmployeeID")
fk.Columns.Add(fkc)
'Set the referenced table and schema.
fk.ReferencedTable = "Employee"
fk.ReferencedTableSchema = "HumanResources"
'Create the foreign key on the instance of SQL Server.
fk.Create()
Visual C# での外部キーの作成、変更、および削除
このコード例では、あるテーブル内の 1 つまたは複数の列から、別のテーブル内の主キー列に対する外部キー リレーションシップを作成する方法を示します。
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks database.
Database db;
db = srv.Databases("AdventureWorks");
//Declare a Table object variable and reference the Employee table.
Table tbe;
tbe = db.Tables("Employee", "HumanResources");
//Declare another Table object variable and reference the EmployeeAddress table.
Table tbea;
tbea = db.Tables("EmployeeAddress", "HumanResources");
//Define a Foreign Key object variable by supplying the EmployeeAddress as the parent table and the foreign key name in the constructor.
ForeignKey fk;
fk = new ForeignKey(tbea, "test_foreignkey");
//Add EmployeeID as the foreign key column.
ForeignKeyColumn fkc;
fkc = new ForeignKeyColumn(fk, "EmployeeID", "EmployeeID");
fk.Columns.Add(fkc);
//Set the referenced table and schema.
fk.ReferencedTable = "Employee";
fk.ReferencedTableSchema = "HumanResources";
//Create the foreign key on the instance of SQL Server.
fk.Create();
}