我创建了2个表,table123
和items_ordered
。如何将主键和外键添加到Microsoft SQL Server数据库中的现有表
table123
具有5列:customerid
,firstname
,surname
,city
和state
items_ordered
具有5列customerid
,order_date
,item
,quantity
和price
。
我想创建table123
在customerid
列和items_ordered
在customerid
列外键的主键。
这里是我曾经尝试创建一个主&外键代码:
ALTER TABLE table123
ADD PRIMARY KEY (customerid);
ALTER TABLE items_ordered
ADD FOREIGN KEY (customerid)
REFERENCES table123 (customerid);
然而,当我执行这些命令,它说
不能定义在空的主键约束表'123'中的列
我该如何解决这个问题?表中也没有任何空值。
P.S.我一直在使用这种替代方法创建一个主键和外键的尝试:
SELECT table123.customerid, table123.surname,
items_ordered.order_date, items_ordered.item, items_ordered.price
FROM table123, items_ordered
WHERE table123.customerid = items_ordered.customerid;
上面的代码给了我一张表,客户ID链接到客户名称和产品购买。但是,这是创建主键&的正确方法吗?
好,错误说明了这一切 - 你**不能**在可空列上创建一个主键 - 所以确保在你的定义中为'table123',你有' CustomerId INT NOT NULL' - **然后**您可以定义一个主键。而你的第二次尝试是有缺陷的,因为它应该使用**正确的ANSI/ISO JOIN语法**(而不是在'FROM'子句中以逗号分隔的方式列出表),并且它不会**创建主要和/或外键 - 它只是加入一个共同的列上的两个表 –
好吧,它会是一个内部加入?此外,当您创建主键和外键时,它是否不会创建单独的表? – CrashBandicoot