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.