Ini adalah kesalahan yang umum ditemui di SQL Server saat memasukkan data ke dalam tabel. Kesalahan lengkapnya seperti ini:
Msg 109, Level 15, State 1, Line 1 There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Ini terjadi ketika Anda menentukan lebih banyak kolom di INSERT
pernyataan daripada jumlah nilai yang Anda coba masukkan dengan VALUES
ayat.
Ini akan terjadi jika Anda secara tidak sengaja menghilangkan satu atau beberapa nilai dari VALUES
klausa.
Anda akan mendapatkan kesalahan yang serupa (tetapi secara teknis berbeda) jika Anda mencoba melakukan yang sebaliknya – tentukan lebih sedikit kolom di INSERT
pernyataan daripada yang Anda coba masukkan.
Contoh
Berikut ini contoh untuk didemonstrasikan.
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob');
Hasil:
Msg 109, Level 15, State 1, Line 1 There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Dalam hal ini, saya menentukan dua kolom (FirstName
, LastName
), tetapi saya hanya menetapkan satu nilai untuk disisipkan (Bob
).
Cara Memperbaiki Kesalahan
Saya dapat memperbaikinya dengan menghapus salah satu kolom, atau menambahkan nilai kedua untuk disisipkan.
Jadi saya bisa melakukan ini:
INSERT INTO Customers (FirstName)
VALUES ('Bob');
Atau ini:
INSERT INTO Customers (FirstName, LastName)
VALUES ('Bob', 'Brown');
Meskipun, dengan menggunakan contoh-contoh ini, jika LastName kolom memiliki NOT NULL
kendala, contoh pertama akan melanggar batasan itu (karena saya akan mencoba memasukkan NULL
ke dalam Nama Belakang kolom ketika sebenarnya ada NOT NULL
kendala pada kolom itu).