【发布时间】:2016-04-06 14:47:06
【问题描述】:
以下声明:
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
address VARCHAR(255) NOT NULL,
phone_number VARCHAR(20) NOT NULL
);
不会导致 username 具有 UNIQUE 约束。
my_db=# \d users
Table "public.users"
Column | Type | Modifiers
--------------+------------------------+----------------------------------------------------
id | integer | not null default nextval('users_id_seq'::regclass)
username | character varying(50) | not null
password | character varying(100) | not null
first_name | character varying(50) | not null
last_name | character varying(50) | not null
address | character varying(255) | not null
phone_number | character varying(20) | not null
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
问题
我在文档中没有发现对UNIQUE 的任何限制。我错过了什么?
上下文
PostgreSQL在官方PostgreSQL Docker container上运行
【问题讨论】:
-
在这里工作。也许
CREATE TABLE IF NOT EXISTS干扰了你有一个旧版本? -
@wildplasser 这不是问题。但这让我觉得我需要重建我的 postgres docker 容器才能看到添加的约束。这将使用我所做的更改(添加的
UNIQUE约束)创建一个新图像。仅仅停止并重新运行容器并没有将我的更改应用于现有图像。如果你发布一个,我会接受一个正式的答案。谢谢。 -
为我工作。我的假设是该命令没有运行,因为表存在(没有唯一约束)。
标签: postgresql docker constraints unique-constraint