这些是否等同于添加唯一约束?
Are these equivalent for adding a unique constraint?
我想知道以下查询是否等价。
我想为电影中的两列添加唯一约束 table
CREATE TABLE Movie (
title VARCHAR(255),
year INTEGER,
…
producerC# INTEGER,
UNIQUE (title, year)
);
CREATE TABLE Movie (
title VARCHAR(255) UNIQUE,
year INTEGER UNIQUE,
…
producerC# INTEGER
);
第一个版本将强制电影名称和电影年份的组合始终是唯一的。因此,允许以下两种组合:
Invasion of the Body Snatchers, 1956
Invasion of the Body Snatchers, 1978
但请注意,同一部电影可以出现不止一次,前提是它不是同一年出现的。
第二个版本要求每部电影的片名和年份都是唯一的。这意味着 Body Snatchers 在给定的一年内只能出现一次。
根据我的样本数据,我猜你想使用第一个版本。
不,它们不同。
UNIQUE (title, year)
表示标题和年份的组合是唯一的。
所以 title ="alpha", year="2022" 和 title ="beta", year="2022" 是独一无二的。
title VARCHAR(255) UNIQUE,
year INTEGER UNIQUE,
表示各个列必须具有唯一值。
所以上面的例子违反了上面的约束,因为 2022 年是重复的。
我想知道以下查询是否等价。 我想为电影中的两列添加唯一约束 table
CREATE TABLE Movie (
title VARCHAR(255),
year INTEGER,
…
producerC# INTEGER,
UNIQUE (title, year)
);
CREATE TABLE Movie (
title VARCHAR(255) UNIQUE,
year INTEGER UNIQUE,
…
producerC# INTEGER
);
第一个版本将强制电影名称和电影年份的组合始终是唯一的。因此,允许以下两种组合:
Invasion of the Body Snatchers, 1956
Invasion of the Body Snatchers, 1978
但请注意,同一部电影可以出现不止一次,前提是它不是同一年出现的。
第二个版本要求每部电影的片名和年份都是唯一的。这意味着 Body Snatchers 在给定的一年内只能出现一次。
根据我的样本数据,我猜你想使用第一个版本。
不,它们不同。
UNIQUE (title, year)
表示标题和年份的组合是唯一的。 所以 title ="alpha", year="2022" 和 title ="beta", year="2022" 是独一无二的。
title VARCHAR(255) UNIQUE,
year INTEGER UNIQUE,
表示各个列必须具有唯一值。 所以上面的例子违反了上面的约束,因为 2022 年是重复的。