Причината да получите тази грешка е, че admin_id не е NULLABLE което означава, че трябва имат admin_id за всеки ред. Когато изпълнявате INSERT трябва изрично да вмъкнете admin_id тъй като не е IDENTITY колона собственост.
Очакваните ви резултати показват, че искате да направите UPDATE , а не INSERT . UPDATE ще UPDATE admin_id в момента във вашия table_admin таблица вместо вмъкване на нови редове. Единственото нещо, което не е ясно, е как table_admin се отнася до table_information . Как на john се присвоява 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
РЕДАКТИРАНЕ
Ако нямате никакви admin_name понастоящем попълнен в table_admin тогава ви предлагам просто да съкратите тази таблица и да вмъкнете вашето различно admin_name . Отново бих направил и admin_id свойство за идентичност
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_name до admin_id вече... но не си показал това.