Как установить имя для ненулевого ограничения в MariaDB - PullRequest
0 голосов
/ 25 июня 2019

Я пытался установить имена для ограничений в MariaDB, как я делал в Oracle, но я получил ошибку.

Это мой код:

"CREATE TABLE TBLPROFILES(
ID_PROFILE INT(3) UNSIGNED AUTO_INCREMENT,
PROFILE_NAME VARCHAR(10) CONSTRAINT NN_PROFILES_PROFILE_NAME NOT NULL,
CONSTRAINT UQ_PROFILES_PROFILE_NAME UNIQUE (PROFILE_NAME),
CONSTRAINT PK_PROFILES_ID_PROFILE PRIMARY KEY (ID_PROFILE));"

Это ошибка:

"ОШИБКА 1064 (42000): у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашему серверу MariaDB, версия правильный синтаксис для использования рядом с 'CONSTRAINT NN_PROFILES_PROFILE_NAME NOT NULL, CONSTRAINT UQ_PROFILES_PROFILE_NAM 'в строке 3 "

1 Ответ

0 голосов
/ 25 июня 2019

Существует тысяча различий в синтаксисе между Oracle и MySQL.Вы должны обратиться к справочному руководству MySQL.

CREATE TABLE TBLPROFILES(                       -- ok
    ID_PROFILE INT(3) UNSIGNED AUTO_INCREMENT,  -- ok
    PROFILE_NAME VARCHAR(10)  NOT NULL,         -- note 1
    UNIQUE (PROFILE_NAME),                      -- note 2
    PRIMARY KEY (ID_PROFILE));                  -- note 2

Примечание 1: NOT NULL на самом деле не является «ограничением»;это часть определения столбца.

Примечание 2: я предоставил более простой синтаксис.(Возможно, синтаксис Oracle также будет работать; я не знаю.)

Другие примечания:

INT(3) - 3 игнорируется, если у вас нет ZEROFILL.INT всегда является 32-битным числом.(Я думаю, что это отличается от Oracle.)

Все заглавные буквы обычно не используются в MySQL для имен таблиц и столбцов.(Но это работает, и такие всегда складываются.)

Отказ от ответственности: Нет, я не знаю точно, сколько существует различий.

...