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
END UPDATE
Мой хост предоставляет интерфейс для моей базы данных SQL Server через ASP.NET Enterprise Manager.
У меня есть 3 столбца в моей таблице history
:
-
userId
(key, int, NULL не разрешено) -
name
(ключ, строка, NULL не разрешены) -
id
(не ключ, int, разрешен NULL)
Я хочу сделать столбец id единственным ключом.
Чтобы сделать это, я считаю, что мне нужно:
- Убедитесь, что в этом столбце нет 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. Кажется, это не работает. Может ли кто-нибудь указать мне в правильном направлении? Спасибо!