Kesalahan SQL Server 120 terjadi saat Anda tidak menentukan kolom yang cukup di INSERT
daftar saat menggunakan SELECT
daftar nilai yang akan disisipkan.
Untuk lebih spesifik, itu terjadi ketika Anda menggunakan SELECT
daftar di INSERT
pernyataan, tetapi SELECT
list tidak mengembalikan kolom sebanyak yang Anda tentukan dengan INSERT
.
Ini mudah untuk diperbaiki. Cukup pastikan jumlah kolom cocok antara INSERT
your Anda dan SELECT
daftar.
Kode Buruk
Berikut adalah contoh kode yang menyebabkan kesalahan ini.
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch;
Hasil:
Msg 120, Level 15, State 1, Line 1 The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.
Dalam hal ini, saya menentukan tiga kolom di INSERT
saya , tapi saya hanya memilih dua kolom di SELECT
. saya daftar.
Kode Bagus
Berikut cara memperbaiki kesalahan di atas.
INSERT INTO OrdersLatest (
OrderId,
OrderDate,
OrderDesc
)
SELECT
OrderId,
OrderDate,
OrderDesc
FROM OrdersMarch;
Hasil:
(5 rows affected)
Yang saya lakukan hanyalah menambahkan OrderDesc
kolom ke SELECT
daftar.
Menentukan Lebih Sedikit Kolom
Contoh sebelumnya jelas mengasumsikan bahwa saya ingin memasukkan kolom tambahan. Jika kita tidak ingin kolom tersebut disisipkan, maka kita harus menghapusnya dari INSERT
sama sekali.
Seperti ini.
INSERT INTO OrdersLatest (
OrderId,
OrderDate
)
SELECT
OrderId,
OrderDate
FROM OrdersMarch;
Namun, ini akan tergantung pada apakah kita memiliki NOT NULL
. atau tidak batasan pada tabel tujuan.
Menggunakan Wildcard di Daftar SELECT
Anda juga dapat menggunakan tanda bintang (*
) wildcard di SELECT
daftar.
INSERT INTO OrdersLatest (
OrderDate,
OrderId,
OrderDesc
)
SELECT *
FROM OrdersMarch;
Meskipun ini tidak dianggap sebagai praktik yang baik, karena Anda dapat secara tidak sengaja memilih kolom yang salah, atau urutannya mungkin salah, dll.