PostgreSQL Check_Constraint для IP-адреса как VARCHAR - PullRequest
0 голосов
/ 08 марта 2020

моя таблица определена как

CREATE TABLE "IP" (
    "ID" serial NOT NULL,
    "IP-Add varchar(15) NULL
);

Я хочу создать чек-контракт для адреса IPv4, который будет [1-255]. [0-255]. [0-255]. [ 0-255]

Я пробовал несколько вариантов, таких как

ALTER TABLE "IP" ADD CONSTRAINT "TBL_IP-Add_check" 
CHECK ("IP-Add" IS NULL OR "IP-Add" LIKE '^[1-255].^[1-255].^[1-255]');

Даже когда синтаксис был принят, после этого я больше не мог вводить данные. Кто-нибудь посоветует мне?

Спасибо, Майкл

1 Ответ

0 голосов
/ 09 марта 2020

Я бы использовал приведение к типу inet:

ALTER TABLE "IP" ADD CONSTRAINT "TBL_IP-Add_check" 
CHECK ("IP-Add" IS NULL OR "IP-Add"::inet is not null);

Но определение столбца с типом inet было бы гораздо лучшим решением.

...