Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00907 saat mencoba membuat batasan CHECK

Pesan kesalahannya adalah

ORA-00907: missing right parenthesis

Itu hampir selalu menunjuk ke kesalahan sintaks daripada tanda kurung yang hilang. Dalam hal ini parser keberatan dengan urutan elemen dalam definisi kolom Anda. Secara khusus, klausa DEFAULT harus berada sebelum klausa CONSTRAINT, yang mencakup deklarasi NULL/NOT NULL. Jadi coba

USR_TITRE CHAR(6) DEFAULT 'M.'CHECK (USR_TITRE IN ('M.' , 'Mlle.','Mme.' )) NULL

Kebetulan, Anda akan mendapat masalah dengan kendala itu. Tipe data CHAR selalu diisi dengan panjang yang dideklarasikan. Jadi jika Anda memasukkan 'M.' ke dalam kolom itu akan keluar ke 'M. ', nilai mana yang akan menyebabkan kendala melemparkan pengecualian. Saya sarankan Anda menggunakan VARCHAR2(6) sebagai gantinya.

Deklarasi CHAR hampir selalu merupakan kesalahan, hanya bug yang menunggu untuk terjadi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengkonversi dari tanggal ke zaman-Oracle

  2. Cara mengatur properti koneksi (termasuk Sinonim)

  3. Pencadangan basis data Oracle:Jenis pencadangan dan strategi pencadangan

  4. Di MySQL apakah ada fungsi seperti level di Oracle?

  5. Ada yang salah dengan menggunakan windows-1252 alih-alih UTF-8