Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-00907 khi cố gắng tạo ràng buộc KIỂM TRA

Thông báo lỗi là

ORA-00907: missing right parenthesis

Nó hầu như luôn chỉ ra một lỗi cú pháp chứ không phải là một dấu ngoặc nhọn bị thiếu. Trong trường hợp này, trình phân tích cú pháp phản đối thứ tự của các phần tử trong định nghĩa cột của bạn. Cụ thể, mệnh đề DEFAULT phải đứng trước mệnh đề CONSTRAINT, bao gồm khai báo NULL / NOT NULL. Vì vậy, hãy thử

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

Ngẫu nhiên, bạn sẽ gặp vấn đề với sự ràng buộc đó. Một kiểu dữ liệu CHAR luôn được đệm theo độ dài đã khai báo. Do đó nếu bạn nhập 'M.' vào cột, nó sẽ đệm thành 'M. ', giá trị nào sẽ khiến ràng buộc vượt qua một ngoại lệ. Tôi khuyên bạn nên sử dụng VARCHAR2 (6) để thay thế.

Khai báo CHAR hầu như luôn luôn là một sai lầm, chỉ là một lỗi đang chực chờ xảy ra.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xem xét từng lỗi từng nhóm của Oracle

  2. Oracle - xóa các bản sao

  3. Làm thế nào tôi có thể ngăn chặn ngoại lệ này? java.sql.SQLException:Không thể chuyển đổi thành đại diện nội bộ:

  4. Oracle Nhìn về phía sau Tích cực

  5. ORACLE SQL | Sửa đổi dữ liệu trong ORDER BY