Как получить ограничения ключа столбца из таблицы: INFORMATION_SCHEMA в SQL?

Как получить ограничения ключа столбца из таблицы: INFORMATION_SCHEMA в SQL?

Мне просто нужно получить столбцы с первичным ключом, внешним ключом вместе с этими деталями.

SELECT      COLUMN_NAME AS COLUMNNAME,  
            DATA_TYPE AS DATATYPE,
            CHARACTER_MAXIMUM_LENGTH,
            IS_NULLABLE
FROM        INFORMATION_SCHEMA.COLUMNS  
WHERE       TABLE_NAME = 'My_Table_Name'
Как вы перечисляете первичный ключ таблицы SQL Server?. Найдено по запросу INFORMATION_SCHEMA primary key
Andreas 05.07.2019 23:38
Как просмотреть все внешние ключи к таблице или столбцу?. Найдено по запросу INFORMATION_SCHEMA foreign key
Andreas 05.07.2019 23:39

ЧЕТКО определите свою цель. Вы хотите, чтобы все ограничения? Или просто подмножество, которое можно считать «ключами» (первичными, внешними, уникальными)? Считаете ли вы уникальные ограничения и уникальные индексы одинаковыми?

SMor 06.07.2019 04:42

@Андреас, предыдущая публикация была полезной

goofyui 06.07.2019 04:50
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
421
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте sys.indexes и sys.index_columns

На это уже хорошо ответили: Список всех столбцов индекса и индекса в базе данных SQL Server

Это немного сложно.. sys.index возвращает только столбцы, на которых есть ключ.. у нас есть столбцы, у которых нет индекса или ключей.. выше запрос, который я отправил, возвращает все столбцы, доступные для таблицы, вместе с их типом данных и null или не null.. детали.. Я пытаюсь получить индекс/ключ вместе с этими существующими деталями

goofyui 05.07.2019 23:37

@goofyui Как насчет первичных ключей и внешних ключей, состоящих из нескольких столбцов? Вы не можете просто перечислить эти с участием в столбце.

Andreas 05.07.2019 23:42
Ответ принят как подходящий

Это может помочь...

    USE AdventureWorks2012
    GO
    SELECT t.CONSTRAINT_NAME,t.TABLE_NAME,t.CONSTRAINT_TYPE,c.COLUMN_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS t
    INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE c ON t.CONSTRAINT_NAME = c.CONSTRAINT_NAME
   -- WHERE    t.TABLE_NAME = 'ProductVendor'
        -- AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'

У меня есть запрос, который возвращает .. имена индексов для всех столбцов .. просто исправление, необходимое в логике моего скрипта. INFORMATION_SCHEMA.COLUMNS внутреннее соединение sys.tables b на a.TABLE_NAME = b.name внутреннее соединение sys.index_columns c на c.object_id = b.object_id внутреннее соединение sys.indexes d на c.object_id = d.object_id и d.index_id = c.index_id ГДЕ a.TABLE_NAME = 'My_Table'

goofyui 06.07.2019 20:04

публикация на stackoverflow.com/questions/56926314/… мне очень помогла

goofyui 09.07.2019 20:35

Другие вопросы по теме