Rumah > pangkalan data > tutorial mysql > Mengapa Saya Tidak Boleh Mencipta Indeks Unik pada Lajur nvarchar(maks) saya dalam SQL Server?

Mengapa Saya Tidak Boleh Mencipta Indeks Unik pada Lajur nvarchar(maks) saya dalam SQL Server?

DDD
Lepaskan: 2024-12-19 03:42:08
asal
847 orang telah melayarinya

Why Can't I Create a Unique Index on My nvarchar(max) Column in SQL Server?

Jenis Lajur Kunci Indeks Tidak Sah: "adalah jenis yang tidak sah untuk digunakan sebagai lajur kunci dalam indeks"

Dalam konteks sistem pengurusan pangkalan data hubungan, mesej ralat yang menunjukkan "Lajur 'kunci' dalam jadual 'misc_info' adalah jenis yang tidak sah untuk digunakan sebagai lajur kunci dalam indeks" timbul apabila cuba mencipta indeks unik pada lajur jenis data tertentu.

Konteks Masalah:

Mesej ralat yang disediakan menyerlahkan bahawa percubaan untuk mencipta indeks unik pada lajur bernama "kunci" dalam jadual "misc_info" telah gagal. Jenis data lajur, nvarchar(maks), tidak serasi dengan digunakan sebagai kunci indeks, yang membawa kepada ralat.

Penyelesaian:

Indeks unik mengenakan had pada saiz nilai yang boleh mereka simpan sebagai kunci. Untuk jenis data nvarchar, yang boleh menyimpan rentetan panjang berubah-ubah, panjang maksimum yang dibenarkan untuk kunci indeks ialah 450 aksara. Had ini adalah perlindungan daripada melebihi kekangan saiz baris 8000 bait yang dikenakan oleh SQL Server.

Untuk menyelesaikan ralat, kurangkan panjang maksimum lajur "kunci" kepada 450 aksara. Ini boleh dicapai dengan mengubah suai definisi jadual seperti berikut:

ALTER TABLE misc_info ALTER COLUMN key nvarchar(450) UNIQUE NOT NULL;
Salin selepas log masuk

Sebagai alternatif, jika keperluan adalah untuk menyimpan rentetan lebih daripada 450 aksara, pertimbangkan untuk menggunakan jenis data varchar dan bukannya nvarchar. Varchar mempunyai had panjang maksimum 8000 aksara, memberikan lebih fleksibiliti untuk menyimpan kunci yang lebih panjang sambil mengekalkan kekangan indeks yang unik.

ALTER TABLE misc_info ALTER COLUMN key varchar(8000) UNIQUE NOT NULL;
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mencipta Indeks Unik pada Lajur nvarchar(maks) saya dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan