Неправильный синтаксис. Должно быть
SQL> CREATE TABLE users
2 (
3 id INT GENERATED ALWAYS AS IDENTITY,
4 username VARCHAR2 (100) NOT NULL,
5 email VARCHAR2 (100) NOT NULL,
6 verified INT DEFAULT 0 NOT NULL,
7 token VARCHAR2 (255),
8 password VARCHAR2 (255) NOT NULL,
9 CONSTRAINT PK_id PRIMARY KEY (id)
10 );
Table created.
SQL>
Что вы сделали не так?
- нет
auto increment
; от 12 c вы можете использовать столбцы идентификаторов (как в моем примере; в более ранних версиях мы делали это с последовательностями и триггерами базы данных) - сначала идет
default
, затем not null
INT
тип данных не имеет точности - не используется в объявлении столбца первичного ключа
not null
; ограничение первичного ключа все равно не позволит
Как оказалось, вы используете 11g, тогда, как я уже сказал, столбец идентификаторов не будет работать. Вот обходной путь:
SQL> create sequence sequ;
Sequence created.
SQL> create table users
2 (
3 id int,
4 username varchar2 (100) not null,
5 email varchar2 (100) not null,
6 verified int default 0 not null,
7 token varchar2 (255),
8 password varchar2 (255) not null,
9 constraint pk_id primary key (id)
10 );
Table created.
SQL> create or replace trigger trg_pk_users
2 before insert on users
3 for each row
4 begin
5 :new.id := sequ.nextval;
6 end;
7 /
Trigger created.
SQL>