Невозможно вставить значение NULL в столбец 'admin_id', недопустимые значения NULL. Вставить не удается.
Причина, по которой вы получаете эту ошибку, заключается в том, что admin_id
- это не NULLABLE
, то есть вы должны иметь admin_id
для каждой строки. Когда вы выполняете INSERT
, вы должны явно вставить admin_id
, так как это не столбец свойства IDENTITY
.
Ваши ожидаемые результаты показывают, что вы хотите сделать UPDATE
, а не INSERT
. UPDATE
будет UPDATE
admin_id
, который в настоящее время находится в вашей таблице table_admin
, вместо вставки новых строк. Единственное, что неясно, это то, как table_admin
относится к table_information
. Как Джону назначают admin_id = 1
?
Как только вы определите это, вот UPDATE
update t
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn
Если вам все равно, какой admin_name
что получит admin_id
, тогда вы можете создать суррогатный ключ и обновить таблицу. Это будет выглядеть так:
select distinct
admin_name
,admin_id = row_number() over (order by (select null))
into #tempInformation
from table_information
--this is going to show the admin_id that will be updated in the table_admin table
select * from #tempInformation
update t
set t.admin_name = i.admin_name
from table_admin t
inner join #tempInformation i on i.admin_id = t.admin_id
EDIT
Если у вас нет каких-либо admin_name
, в настоящее время заполненных в table_admin
, тогда я предлагаю вам просто обрезать эту таблицу и вставить свой отличный admin_name
. Опять же, я бы также сделал admin_id
свойством * 1047
truncate table table_admin
insert into table_admin (admin_id, admin_name)
select distinct
admin_id = row_number() over (order by (select null))
,admin_name
Я должен подчеркнуть, что в большинстве схем admin_id
будет что-то значить. Это будет PRIMARY KEY
для этой таблицы и будет использоваться для связи этой таблицы с другими в базе данных. Таким образом, незнание того, что admin_id
означает, к какому admin_name
означает, что у вас есть настоящий беспорядок, и случайное присвоение их должно сломать последующие процессы ... но это может быть не так, поскольку вы не поддерживал это с самого начала.
столбец admin_id из таблицы table_admin не может быть идентификатором
Я бы спросил, почему? Это намекает на то, что у вас уже есть отображение от admin_name
до admin_id
... но вы этого не показали.