Как добавить ограничение в этот код, где можно вводить только определенные символы? - PullRequest
3 голосов
/ 10 марта 2020

Полное новичок до mysql, но у меня проблемы с поиском источников в Интернете, которые объясняют мою проблему. По сути, мне нужно добавить ограничение в строку videoCode, где идентификатор - это код в виде XX ##, где X - буквы, а # - цифры.

Любая помощь будет принята с благодарностью.

CREATE TABLE videoTable(
    videoID INT,
    channelID INT,
    videoTitle VARCHAR(255) NOT NULL,
    videoPostedDate DATE NOT NULL,
    videoTags VARCHAR(255),
    noViews INT NOT NULL,
    videoCode VARCHAR(4) NOT NULL (ADD CONSTRAINT)

    PRIMARY KEY (videoID),
    FOREIGN KEY (channelID) REFERENCES channelTable(channelID)
);

1 Ответ

5 голосов
/ 10 марта 2020

Используйте ограничение CHECK :

CREATE TABLE videoTable(
    videoID INT,
    channelID INT,
    videoTitle VARCHAR(255) NOT NULL,
    videoPostedDate DATE NOT NULL,
    videoTags VARCHAR(255),
    noViews INT NOT NULL,
    videoCode VARCHAR(4) NOT NULL CHECK(videoCode REGEXP '^[A-Za-z]{2}[0-9]+$')
    PRIMARY KEY (videoID),
    FOREIGN KEY (channelID) REFERENCES channelTable(channelID)
);

Регулярное выражение описывает строку, состоящую из 2 букв c символов, за которыми следуют только цифры (хотя бы одно число должно быть настоящее время).

Примечание: для этого требуется MySQL 8.0. В более ранних версиях проверочные ограничения анализировались, но игнорировались, и для этого обычно требуется триггер.

...