De reden dat u deze foutmelding krijgt, is omdat admin_id is niet NULLABLE wat betekent dat je moet een admin_id . hebben voor elke rij. Wanneer u een INSERT . uitvoert je moet expliciet de admin_id . invoegen aangezien het geen IDENTITY . is kolom eigendom.
Uit uw verwachte resultaten blijkt dat u een UPDATE . wilt doen , geen INSERT . Een UPDATE zou UPDATE de admin_id momenteel in uw table_admin tabel in plaats van nieuwe rijen in te voegen. Het enige dat onduidelijk is, is hoe de table_admin heeft betrekking op table_information . Hoe krijgt John admin_id = 1 . toegewezen? ?
Als je dat eenmaal hebt gedefinieerd, is hier de UPDATE
update t
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn
Als het je niet uitmaakt welke admin_name krijgt wat admin_id , dan kunt u een surrogaatsleutel maken en uw tabel bijwerken. Het zou er zo uitzien:
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
BEWERKEN
Als u geen . heeft admin_name momenteel ingevuld in de table_admin dan raad ik je aan die tabel af te kappen en je eigen admin_name in te voegen . Nogmaals, ik zou ook admin_id . maken een identiteitseigenschap
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
Ik moet benadrukken dat in de meeste schema's de admin_id iets zou betekenen. Het zou een PRIMARY KEY . zijn voor deze tabel en worden gebruikt om deze tabel te relateren aan andere in de database. Dus, niet wetende welke admin_id gaat naar welke admin_name betekent dat je een echte puinhoop in je handen hebt en ze willekeurig toewijst zou stroomafwaartse processen doorbreken... maar dat is misschien niet het geval, aangezien u het in het begin niet hebt bijgehouden.
Ik zou vragen waarom? Dit zou erop duiden dat je een toewijzing hebt van de admin_name naar admin_id al... maar dat heb je niet laten zien.