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
DDDasal
2024-12-19 03:42:08859semak imbas

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;

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;

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!

Kenyataan:
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