Как вытащить имя столбца (ов) первичного ключа таблицы MS SQL Server? - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть база данных MS SQL Server с 75 таблицами, и я пытаюсь вставить записи в таблицы, если записи с таким же первичным ключом не существует, или обновить, если они есть. Я мог бы жестко закодировать первичные ключи для каждой таблицы в мой код vb.net, но я бы предпочел не добавлять новые таблицы позже, и мой код должен обрабатывать это без изменений. Есть ли способ извлечь имена столбцов первичного ключа из таблицы с помощью запроса, чтобы я мог циклически проходить по каждой таблице, выполняющей один и тот же код?

Спасибо, Том

P.S. Я немного новичок, когда дело доходит до SQL, поэтому, если у вас есть время, будьте просты и ясны с любыми ответами.

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Посмотрите на Найти таблицы с ограничением первичного ключа в базе данных

SELECT  i.name AS IndexName,
        OBJECT_NAME(ic.OBJECT_ID) AS TableName,
        COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM    sys.indexes AS i INNER JOIN 
        sys.index_columns AS ic ON  i.OBJECT_ID = ic.OBJECT_ID
                                AND i.index_id = ic.index_id
WHERE   i.is_primary_key = 1
0 голосов
/ 23 сентября 2010

Существует более простой способ сделать это.Он называется ADO.NET :)

По сути, вам нужно DataAdapter для извлечения данных из вашей БД в DataSet.Затем вы добавляете, изменяете или удаляете строки в DataTable в DataSet, и когда вы будете готовы к фиксации в БД, вы говорите DataAdapter об этом.DataSet может отслеживать изменения, внесенные в него, а DataAdapter знает, какой оператор использовать в зависимости от свойства RowState строки / записи.

См. здесь как получить и изменить данные с помощью ADO.NET.

...