SQL。唯一主键
SQL. Unique and Primary Key
我的要求是 table 的产品不能同时具有相似的供应商、产品和版本。
但是,我还希望这个 table 通过它的主键在另一个 table 上被引用,至于不同的供应商,我使用的产品版本 unique
.
create table Products
(
vendor varchar(100),
product varchar(100),
version varchar(30),
unique (vendor, product, version, cve)
);
但是这样我就无法通过它的 product_id
来引用它,因为我想在另一个 table:
create table Product_cve(
product_id int,
cve varchar(14),
foreign key (product_id) references Products(product_id),
foreign key (cve) references VulnerabilitiesCVE(cve)
);
,我能做的另一件事是
create table Products
(
product_id int NOT NULL AUTO_INCREMENT,
vendor varchar(100),
product varchar(100),
version varchar(30),
primary key (product_id)
);
这样,我最终会得到重复的产品...
解决方法很简单:
create table Products
(
product_id int AUTO_INCREMENT
vendor varchar(100),
product varchar(100),
version varchar(30),
UNIQUE(vendor, product, version, cve),
PRIMARY KEY (product_id)
);
我的要求是 table 的产品不能同时具有相似的供应商、产品和版本。
但是,我还希望这个 table 通过它的主键在另一个 table 上被引用,至于不同的供应商,我使用的产品版本 unique
.
create table Products
(
vendor varchar(100),
product varchar(100),
version varchar(30),
unique (vendor, product, version, cve)
);
但是这样我就无法通过它的 product_id
来引用它,因为我想在另一个 table:
create table Product_cve(
product_id int,
cve varchar(14),
foreign key (product_id) references Products(product_id),
foreign key (cve) references VulnerabilitiesCVE(cve)
);
,我能做的另一件事是
create table Products
(
product_id int NOT NULL AUTO_INCREMENT,
vendor varchar(100),
product varchar(100),
version varchar(30),
primary key (product_id)
);
这样,我最终会得到重复的产品...
解决方法很简单:
create table Products
(
product_id int AUTO_INCREMENT
vendor varchar(100),
product varchar(100),
version varchar(30),
UNIQUE(vendor, product, version, cve),
PRIMARY KEY (product_id)
);