SQL SSMS: изменен дизайн 'allow null', теперь нельзя переключаться обратно (`не может вставить значение NULL в столбец`) - PullRequest
0 голосов
/ 20 ноября 2018

Я работаю в базе данных dev SQL в SSMP.

У нас есть соединительная таблица jnc_roles_users, которая извлекает значения из двух справочных таблиц: lu_roles и lu_users.

Изначально во всех столбцах таблицы соединений, кроме одного, был установлен флажок Allow Nulls.Затем я вошел в редактор дизайна и установил все флажки - получил предупреждение, что это повлияет на две таблицы поиска, и успешно сохранил изменения.

Теперь я хочу вернуться к исходному дизайну таблицы, в котором ничего не допускается, кроме одного столбца.Но SSMS больше не позволяет мне снимать флажок Allow Nulls для одного из полей.По иронии судьбы, нет проблем с снятием отметки с нашего первичного ключа «ID».Это наш 'псевдо' первичный ключ 'roleUserID', который я не могу изменить обратно.Когда я пытаюсь снять флажок «Разрешить пустые значения» и сохранить его, я получаю предупреждение:

'jnc_roles_users' table - Unable to modify table.<br> Cannot insert the value NULL into column 'roleUserID', table 'jnc_roles_users'; column does not allow nulls. INSERT fails. The statement has been terminated.

Это кажется нелогичным, поскольку столбец в настоящее время застрял на «Разрешить нулевые значения», но все жеэто всплывающее окно говорит мне, что оно не может принимать нули.

lu_roles и lu_users были успешно сохранены, но не jnc_roles_users, которая является единственной таблицей, которая содержит 'roleUserID'.

столбец roleUserIDтехнически это не первичный ключ - но мы рассматриваем его как «подобный», поскольку он принимает уникальные значения, которые мы установили.По определенным причинам мы рассматриваем этот столбец как своего рода первичный ключ - что-то, что нужно делать с резервным копированием базы данных в разных местах, и как обычный идентификатор pk может неправильно дублироваться в разных средах, поэтому нам понадобился второй псевдо-pk * 1024.*.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Скорее всего, некоторые новые данные со значением NULL были добавлены в таблицу между моментом, когда вы изменили параметр Allow NULL в конструкторе, и временем, когда вы изменили его.

0 голосов
/ 20 ноября 2018

Вы можете попробовать использовать ALTER TABLE -

ALTER TABLE jnc_role_users
ALTER COLUMN roleUserID NVARCHAR(50) NOT NULL

Измените NVARCHAR (50) на тип данных, который используется в столбце roleUserID

...