Những tên cột không nên sử dụng để đặt tên trong Oracle

Thông thường khi đặt tên các cột cho bảng trong Oralce, chúng ta cần tránh đặt một số từ khóa vì có thể gây ra các lỗi sau này. Sau đây là một ví dụ với tên cột được đặt là EXCEPTION

SQL> create table t( x int, exception int);

Table created.

SQL> insert into t values (1,1);

1 row created.

SQL> commit;

Commit complete.

Bảng này có vẻ hoạt động bình thường trong các khối lệnh PL/SQL

SQL> declare
  2    v int;
  3  begin
  4    select exception
  5    into   v
  6    from   t;
  7  end;
  8  /

PL/SQL procedure successfully completed.

Nhưng vẫn có một số loại lệnh sẽ gây ra lỗi với các tên cột đặc biệt, như ví dụ dưới đây:

SQL> declare
  2    r t%rowtype;
  3  begin
  4    r.x := 1;
  5    r.exception := 1;
  6  end;
  7  /
  r.exception := 1;
    *
ERROR at line 5:
ORA-06550: line 5, column 5:
PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following:
 
current delete exists prior
The symbol " was inserted before "EXCEPTION" to continue.

Chúng ta có thể dễ dàng sửa lỗi này bằng cách thêm dấu ” (nháy kép) để sửa lỗi

SQL> declare
  2    r t%rowtype;
  3  begin
  4    r.x := 1;
  5    r."EXCEPTION" := 1;
  6  end;
  7  /

PL/SQL procedure successfully completed.

Dưới đây là danh sách những tên cột trong Oracle cần tránh khi đặt tên, bạn có thể note nó vào một đâu đó để sau này tra cứu lại trước khi thiết kế bảng

AT
BEGIN
CASE
CLUSTERS
COLAUTH
COLUMNS
CRASH
CURSOR
DECLARE
END
EXCEPTION
FETCH
FUNCTION
GOTO
IF
INDEXES
OVERLAPS
PROCEDURE
SQL
SUBTYPE
TABAUTH
TYPE
VIEWS
WHEN