UPDATE
Вот ограничения в результате запроса
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME COLUMN_NAME ORDINAL_POSITION
PK_history userKey 1
PK_history name 2
Вот результат запроса
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME CONSTRAINT_TYPE IS_DEFERRABLE INITIALLY_DEFERRED
PK_history PRIMARY KEY NO NO
КОНЕЦ ОБНОВЛЕНИЯ
Мой хост предоставляет интерфейс к моей БД SQL Server через ASP.NET Enterprise Manager.
В моей таблице history
есть 3 столбца:
userId
(ключ, int, NULL не допускается)
name
(ключ, строка, NULL не допускается)
id
(не ключ, int, допускается NULL)
Я хочу сделать столбец идентификатора единственным ключом.
Чтобы сделать это, я считаю, что мне нужно:
- Убедитесь, что в этом столбце нет ни одного NULL для какой-либо строки
- Установить для столбца запрет на NULL
- Добавить столбец в качестве первичного ключа
- Удалите остальные 2 столбца в качестве ключей
Однако, когда я использую предоставленный пользовательский интерфейс, он никогда не работает. Иногда это будет выглядеть так, будто оно пытается что-то сделать, но оно никогда не изменится, когда я обновлю представление столбцов. Иногда он создает временную таблицу, которая выглядит так, как будто он пытался выполнить некоторые операции, но никогда не копируется / не перезаписывает исходную таблицу, которую я пытаюсь изменить.
Когда я пытаюсь использовать запрос, изменения также не отображаются. Вот вопросы, которые мне нужны:
SELECT * from history WHERE id is NULL <---- This shows 0 results
ALTER TABLE history
ALTER COLUMN id int NOT NULL
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
GO
Я только что попытался запретить NULL и добавить первичный ключ для столбца id. Это не похоже на работу. Может ли кто-нибудь указать мне правильное направление? Спасибо!