Задать вопрос
@Alena09567484

Как исправить ошибку при отправке запроса?

Помогите найти ошибку в скрипте.
CREATE TABLE species( 
    species_id       INTEGER PRIMARY KEY,
    type_id          INTEGER,
    species_name     VARCHAR NOT NULL,
    species_amount   INTEGER,
    date_start       DATE,
	  species_status varchar(100) NOT NULL DEFAULT 'active'::character varying,
    CONSTRAINT species_status_check CHECK (((species_status)::text = ANY (ARRAY[('active'::character varying)::text, ('absent'::character varying)::text, ('fairy'::character varying)::text])))
);
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Вот они, красным подсвечены:
650027f3b8902774711648.png

Это синтаксис PostgreSQL, а не MySQL - в это главная ошибка.
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
То что вы пытаетесь сделать в MySQL можно сделать при помощи типа ENUM

CREATE TABLE species ( 
    species_id       INTEGER PRIMARY KEY,
    type_id          INTEGER,
    species_name     VARCHAR(255) NOT NULL,
    species_amount   INTEGER,
    date_start       DATE,
    species_status   ENUM ('active', 'absent', 'fairy') NOT NULL DEFAULT 'active'
);

https://sqlize.online/sql/mariadb/38af7f7fa3c528d5...

Но лучше использовать таблицу-справочник
CREATE TABLE species_statuses ( 
    id       INTEGER PRIMARY KEY,
    name     VARCHAR(255) NOT NULL
);
INSERT INTO species_statuses VALUES (1, 'active'), (2, 'absent'), (3, 'fairy');

CREATE TABLE species ( 
    id          INTEGER PRIMARY KEY,
    type_id     INTEGER,
    name        VARCHAR(255) NOT NULL,
    amount      INTEGER,
    date_start  DATE,
    status_id   INTEGER DEFAULT 1,
    FOREIGN KEY (status_id) REFERENCES species_statuses(id)
);

https://sqlize.online/sql/mariadb/1121e0d679fb1aae...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы