在SQL Server上创建的主键未标识
机器是产品的一个子类型。M_ProductID正在通过此键引用父表产品的主键。序列号用于唯一识别机器。问题是,我想从Serial_No创建一个外键到Service table中,因为我想跟踪机器的序列号(这是因为,例如,对于每个型号或类型,我们可以有许多机器,但每个机器都有其唯一的序列号),但创建时会出错。你能帮我吗 创建外键的一个要求是,所引用的表在要引用的列上必须具有唯一的键。因此,在您的示例中,为了使其工作,您需要sampMachine上的唯一键(Serial_No),以便您可以仅使用Serial_No为其创建外键。按照现在的方式,您需要在sampService表中使用M_Product_Id,并将其添加到外键定义中在SQL Server上创建的主键未标识,sql,sql-server,database,create-table,Sql,Sql Server,Database,Create Table,机器是产品的一个子类型。M_ProductID正在通过此键引用父表产品的主键。序列号用于唯一识别机器。问题是,我想从Serial_No创建一个外键到Service table中,因为我想跟踪机器的序列号(这是因为,例如,对于每个型号或类型,我们可以有许多机器,但每个机器都有其唯一的序列号),但创建时会出错。你能帮我吗 创建外键的一个要求是,所引用的表在要引用的列上必须具有唯一的键。因此,在您的示例中,为了使其工作,您需要sampMachine上的唯一键(Serial_No),以便您可以仅使用Se
CREATE TABLE sampProduct
(
Product_ID VARCHAR(15) NOT NULL,
Supplier_ID INT NOT NULL,
Category_ID INT NOT NULL,
Unit_Price DECIMAL(10, 2)
PRIMARY KEY(Product_ID)
)
CREATE TABLE sampMachine
(
M_Product_ID VARCHAR(15) NOT NULL,
Serial_No VARCHAR(15) NOT NULL,
Machine_Model VARCHAR(20),
PRIMARY KEY(M_Product_ID, Serial_No),
FOREIGN KEY(M_Product_ID) REFERENCES sampProduct(Product_ID)
)
CREATE TABLE sampService
(
Service_ID VARCHAR(15) NOT NULL,
Serial_No VARCHAR(15) NOT NULL,
Complaint VARCHAR(40) NOT NULL,
PRIMARY KEY(Service_ID),
FOREIGN KEY(Serial_No) REFERENCES sampMachine(Serial_No)
)
请花点时间格式化您的代码,以便我可以尝试帮助您。如果您希望从其他表引用它,您必须在
sampMachine(Serial\u No)
上定义一个唯一的约束(或索引)。@ypercube-谢谢您,先生,我找到了解决我问题的方法:)
create table sampService(
M_Product_ID varchar(15) not null,
Service_ID varchar(15) not null,
Serial_No varchar(15) not null,
Complaint varchar(40) not null,
primary key (Service_ID),
foreign key (Serial_No) references sampMachine(m_Product_Id, Serial_No)
)