2015-11-05 134 views
-4

CREATE TABLE间( RoomID为nvarchar(8)PRIMARY KEY, 容量数字(3)尝试在sql中创建外键时出现错误?

CREATE TABLE RoomType( RoomType nvarchar的(2)主键, 描述为nvarchar(20), 责任管理为nvarchar(20) )

ALTER TABLE房

附加约束fk_type外键(类型)引用室类型(Type)

主要错误0x80040E11,次要错误0

ALTER TABLE房 附加约束fk_type外键(类型)引用RoomType(类型) 无效的列ID。 [类型]

+0

你想命名你正在创建的表的名字是什么?你想在那张桌子上放什么样的领域?哪些表和字段应该参与外键关系? – zedfoxus

+0

我想要创建RoomID和设备类型以将房间与设备关联,因此新表格将称为RoomEquipment。 @zedfoxus – salman12

+0

好的,RoomEquipment是桌子。它将有RoomID和EquipmentType字段。 RoomEquipment的EquipmentType字段将与Equipment的EquipmentType字段相关。 RoomEquipment的RoomID字段与任何东西有关吗? – zedfoxus

回答

0

您可以创建结合RoomID和EquipmentType像这样的表RoomEquipment:

create table RoomEquipment (
    RoomID int, 
    EquipmentType nvarchar(1), 
    primary key (roomid, equipmenttype), 
    constraint fk_roomequipment_equipment_type 
      foreign key (equipmenttype) 
      references equipment(equipmenttype), 
    constraint fk_roomequipment_equipment_roomid 
      foreign key (roomid) 
      references room(roomid) 
); 

其它表可能是这样的:

-- I prefer using char datatype for predictable number of characters in a field 
CREATE TABLE RoomType (
Roomtype nvarchar(2) NOT NULL, 
Description nvarchar(20), 
Responsibility nvarchar(20), 
primary key (Roomtype) 
); 

-- You could use char(1) instead of nvarchar(1) for type; I'd prefer using int instead 
create table Equipment (
Equipmenttype nvarchar(1) NOT NULL, 
Description nvarchar(10) 
); 

-- Added a unique key to assist with good foreign key relationship 
alter table Equipment add constraint uk_equipment_equipmenttype unique (equipmenttype); 

-- Just use an int or char if roomID length is predictable 
Create table Room (
RoomID nvarchar(8), 
Capacity numeric(3), 
Roomtype(fk,nvarchar(2) 
); 

alter table room add constraint uk_room_id unique (roomid); 

例子是在这里:http://sqlfiddle.com/#!3/f510b

+0

我已添加表房间。 – salman12

+0

检查我在哪里使用适当的外键创建'RoomEquipment'表的第一个代码块。这对你有用吗? – zedfoxus

+0

在我的任务中,它表示我们不允许组合任何表格,但这确实有助于感谢。 – salman12

相关问题