我正在編寫一個c#單元測試,用於針對目標數據庫,總是SQL 2008以及數據映射到的類驗證ORM類的字符串屬性。SQL 2008 - INFORMATION_SCHEMA視圖中的外鍵約束
檢查指定的外鍵是在DB有效很簡單:
static private bool ConstraintExsits(string table, string column, ConstraintType constraintType)
{
string constraintTypeWhereClause;
switch (constraintType)
{
case ConstraintType.PrimaryKey:
constraintTypeWhereClause = "PRIMARY KEY";
break;
case ConstraintType.ForeignKey:
constraintTypeWhereClause = "FOREIGN KEY";
break;
default:
throw new ArgumentOutOfRangeException("constraintType");
}
var cmd = new SqlCommand(
@"SELECT a.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS a
JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE b on a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE a.TABLE_NAME = @table AND b.COLUMN_NAME = @column AND a.CONSTRAINT_TYPE = '" + constraintTypeWhereClause + "'",
Connection);
cmd.Parameters.AddWithValue("@table", table.Trim('[').Trim(']'));
cmd.Parameters.AddWithValue("@column", column.Trim('[').Trim(']'));
return !string.IsNullOrEmpty((string)cmd.ExecuteScalar());
}
現在採取以下外鍵關係:
我的問題:我如何查詢'Primary/Unique Key Base Table'和'Primary/Unique Key Columns'邊的關係?我無法在INFORMATION_SCHEMA視圖中看到這些引用。
感謝 Ĵ
太棒了!謝謝。 – 2012-10-25 21:12:30