Grunden til at du får denne fejl, er fordi admin_id er ikke NULLABLE hvilket betyder, at du skal har et admin_id for hver række. Når du udfører en INSERT du skal udtrykkeligt indsætte admin_id da det ikke er en IDENTITY egenskabskolonnen.
Dine forventede resultater viser, at du vil lave en OPDATERING , ikke en INSERT . En OPDATERING ville OPDATERE admin_id i øjeblikket i din table_admin tabel i stedet for at indsætte nye rækker. Den ene ting, der er uklar, er, hvordan table_admin relaterer til tabelinformation . Hvordan bliver john tildelt admin_id =1 ?
Når du har defineret det, er her
update t
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn
Hvis du er ligeglad hvilken admin_name får hvad admin_id , så kan du oprette en surrogatnøgle og opdatere din tabel. Det ville se sådan ud:
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
REDIGER
Hvis du ikke har nogle admin_name i øjeblikket udfyldt i table_admin så foreslår jeg, at du bare trunkerer tabellen og indsætter dit særskilte admin_name . Igen ville jeg også lave admin_id en identitetsejendom
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
Jeg bør fremhæve, at i de fleste skemaer er admin_id ville betyde noget. Det ville være en PRIMÆR NØGLE for denne tabel og bruges til at relatere denne tabel til andre i databasen. Altså uden at vide hvilket admin_id går til hvilken admin_name betyder, at du har et rigtig rod på dine hænder, og at tildele dem tilfældigt bør bryde nedstrøms processer... men det er måske ikke tilfældet, da du ikke har holdt det op til at begynde med.
Jeg ville spørge hvorfor? Dette ville hentyde til, at du har en kortlægning af admin_name til admin_id allerede... men det har du ikke vist.