在 PostgreSQL 中,如果我将特定数据类型(例如 an mail address
)存储在跨多个表的多个列中,我可以简单地定义具有所有约束的自定义邮件类型,如下所示:
CREATE TYPE status_enum AS enum ('accepted', 'declined', 'awaiting');
CREATE DOMAIN mail_address
AS varchar(100) CHECK(value ~ '[A-Za-z0-9.]+@[A-Za-z0-9]+[.][A-Za-z]+');
然后像这样使用它:
CREATE TABLE user (
...
personal_email mail_address NOT NULL UNIQUE,
work_email mail_address NOT NULL UNIQUE,
status status_enum NOT NULL,
...
);
CREATE TABLE job (
...
status status_enum NOT NULL,
client_email mail_address NOT NULL UNIQUE,
...
);
我发现 MySQL 不是对象关系数据库,因此没有自定义数据类型。
我的问题是:
人们如何在 MySQL 中处理多列中重复出现的数据类型,以防止复制粘贴相同的约束?