Alasan Anda mendapatkan kesalahan ini adalah karena admin_id
bukan NULLABLE
artinya Anda harus memiliki admin_id
untuk setiap baris. Saat Anda melakukan INSERT
Anda harus secara eksplisit memasukkan admin_id
karena ini bukan IDENTITY
kolom properti.
Hasil yang diharapkan menunjukkan bahwa Anda ingin melakukan UPDATE
, bukan INSERT
. UPDATE
akan UPDATE
admin_id
saat ini di table_admin
. Anda tabel alih-alih menyisipkan baris baru. Satu hal yang tidak jelas adalah bagaimana table_admin
berhubungan dengan table_information
. Bagaimana john mendapatkan admin_id = 1
?
Setelah Anda menentukannya, berikut adalah UPDATE
update t
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn
Jika Anda tidak peduli dengan admin_name
mendapatkan apa admin_id
, lalu Anda dapat membuat kunci pengganti dan memperbarui tabel Anda. Ini akan terlihat seperti ini:
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
Jika Anda tidak memiliki apa pun admin_name
saat ini diisi di table_admin
maka saya sarankan Anda hanya memotong tabel itu dan memasukkan admin_name
Anda yang berbeda . Sekali lagi, saya juga akan membuat admin_id
properti identitas
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
Saya harus menyoroti bahwa di sebagian besar skema, admin_id
akan berarti sesuatu. Ini akan menjadi PRIMARY KEY
untuk tabel ini dan digunakan untuk menghubungkan tabel ini dengan yang lain dalam database. Jadi, tidak tahu yang mana admin_id
pergi ke mana admin_name
berarti Anda memiliki kekacauan nyata di tangan Anda dan menugaskannya secara acak harus memecah proses hilir ... tapi itu mungkin tidak terjadi karena Anda belum mempertahankannya sejak awal.
Saya akan bertanya mengapa? Ini akan menyinggung Anda memiliki pemetaan admin_name
ke admin_id
sudah ... tapi Anda belum menunjukkan itu.