Как определить, входит ли столбец в первичный ключ своей таблицы? (SQL Server)
Я сейчас использую ...
select Table_Name, Column_name, data_type, is_Nullable from information_Schema.Columns
... для определения 9X_sql-srever информации о столбцах в данной базе данных 9X_ms-sql-server с целью создания уровня доступа к данным.
Откуда я могу получить информацию о том, являются ли эти столбцы участниками первичного ключа своей таблицы?
Ответ #1
Ответ на вопрос: Как определить, входит ли столбец в первичный ключ своей таблицы? (SQL Server)
Вот один способ (замените keycol именем 9X_primary-keys столбца, который вы ищете для):
SELECT K.TABLE_NAME , K.COLUMN_NAME , K.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY' AND K.COLUMN_NAME = 'keycol';
- У вас также должно быть имя интересующей таблицы в вашем предложении where. В противном случае, если сущ ...
Ответ #2
Ответ на вопрос: Как определить, входит ли столбец в первичный ключ своей таблицы? (SQL Server)
Точно так же следующая информация предоставит 9X_mssql вам информацию обо всех таблицах и их ключах 9X_ms-sql-server вместо информации о конкретных столбцах. Таким 9X_primary-key образом, вы убедитесь, что у вас есть все 9X_sql-server интересующие столбцы и знаете, в чем они 9X_code-generation участвуют. Чтобы увидеть все ключи (первичные, внешние, уникальные), прокомментируйте 9X_primary-keys предложение WHERE.
SELECT K.TABLE_NAME, C.CONSTRAINT_TYPE, K.COLUMN_NAME, K.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY K.TABLE_NAME, C.CONSTRAINT_TYPE, K.CONSTRAINT_NAME
Ответ #3
Ответ на вопрос: Как определить, входит ли столбец в первичный ключ своей таблицы? (SQL Server)
При необходимости полное внешнее соединение 9X_sql-server с INFORMATION_SCHEMA.COLUMNS и INFORMATION_SCHEMA.KEY_COLUMN_USAGE. В 9X_sql-srever операторе select добавьте столбец CONSTRAINT_NAME 9X_mssql из INFORMATION_SCHEMA.KEY_COLUMN_USAGE, который 9X_code-generation даст вам null или имя ключа.
select C.Table_Name, C.Column_name, data_type, is_Nullable, U.CONSTRAINT_NAME from information_Schema.Columns C FULL OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE U ON C.COLUMN_NAME = U.COLUMN_NAME WHERE C.TABLE_NAME=@TABLENAME
-
2
-
8
-
11
-
3
-
9
-
6
-
2
-
9
-
4
-
1
-
2
-
2
-
11
-
8
-
4
-
3
-
3
-
2
-
2
-
3
-
4
-
2
-
2
-
3
-
20
-
4
-
9
-
2
-
6
-
9
-
2
-
4
-
4
-
6
-
7
-
9
-
4
-
1
-
4
-
1
-
2
-
4
-
9
-
7
-
1
-
4
-
1
-
1
-
3
-
3