如何在SQL Server CE (Compact Edition)数据库中创建外键关系?

48

Visual Studio 2005没有提供在SQL Server CE数据库(我使用的是3.0版本)中创建表间关系的界面,并且据我所知,你不能使用管理工具打开Compact Edition DB。有什么办法吗?

7个回答

71

很不幸,目前SQL Server CE中没有像SQL Server 2005那样的设计支持来构建表之间的关系。要构建关系,您需要使用SQL命令,例如:

ALTER TABLE Orders
ADD CONSTRAINT FK_Customer_Order
FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId)

如果你正在进行CE开发,我建议查看这个常见问题解答:

编辑:在 Visual Studio 2008 中,现在可以通过右键单击表格来完成此操作。


2
我相信你漏掉了 CONSTRAINT 关键字。至少在 SQL Server CE 3.5 中...ALTER TABLE Orders ADD CONSTRAINT FK_Customer_Order FOREIGN KEY (CustomerId) REFERENCES Customers(CustomerId) - Edo

44

Visual Studio 2008 的确有一个设计工具,可以让你添加外键。只需右键单击表格...然后选择"表格属性",接着进入"添加关系"部分。


我相信当我遇到这个问题时,我正在使用VS 2005。现在很高兴知道你可以通过VS 2008的用户界面来做到这一点! - Ryan Shripat

7

您需要创建一个查询(在Visual Studio中,右键单击DB连接 -> 新建查询),并执行以下SQL:

ALTER TABLE tblAlpha
ADD CONSTRAINT MyConstraint FOREIGN KEY (FK_id) REFERENCES
tblGamma(GammaID)
ON UPDATE CASCADE

为了验证你的外键是否已经创建成功,执行以下SQL语句:

SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

感谢 E Jensen(http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=532377&SiteID=1)提供的帮助。


4
当Alan说有设计支持时是正确的。Rhywun错误地暗示您无法选择外键表。他的意思是在UI中,外键表下拉菜单被灰显 - 这只是意味着他没有右键单击正确的表以添加外键。
总之,请右键单击外键表,然后通过“表属性”>“添加关系”选项选择相关的主键表。
我已经做过很多次了,它可以正常工作。

1
create table employee
(
   empid int,
   empname varchar(40),
   designation varchar(30),
   hiredate datetime, 
   Bsalary int,
   depno constraint emp_m foreign key references department(depno)
)

我们应该有一个主键来创建两个或多个表之间的外键或关系。

1

创建SQL Server Compact 3.5数据库的演示

为了在前面的过程中创建的表之间建立关系

  1. 在Server Explorer/Database Explorer中展开"Tables"
  2. 右键单击"Orders"表,然后单击"Table Properties"
  3. 点击"Add Relations"
  4. 在"Relation Name"框中键入FK_Orders_Customers。
  5. 在"Foreign Key Table Column"列表中选择CustomerID。
  6. 点击"Add Columns"
  7. 点击"Add Relation"
  8. 点击"OK"以完成在数据库中创建关系的过程。
  9. 再次点击"OK"关闭"Table Properties"对话框。

1
我知道这个问题被提出已经是"很长时间"了。但以防万一,如果有帮助的话,
通过SQL Server Compact Tool Box (https://sqlcetoolbox.codeplex.com/),添加关系得到了很好的支持。只需安装它,然后您就可以使用Server Explorer窗口连接到Compact数据库。右键单击主表,选择“表属性”。您应该有以下窗口,其中包含“添加关系”选项卡,允许您添加关系。

Add Relations Tab - SQL Server Compact Tool Box


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接