SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?

Posted

技术标签:

【中文标题】SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?【英文标题】:Does SQL Server Compact not support keywords 'Foreign Key References' in Create Table or am I making a mistake? 【发布时间】:2011-02-08 22:49:54 【问题描述】:

我在使用 Sql Compact 时不断出错。我已经看到可以在精简版中创建表约束,如here 所示。根据here 找到的文件,它提供了“具有级联删除和更新的完全参照完整性”。那么我真的不允许做以下事情还是我犯了错误?我不断收到来自 sql server compact edition 的投诉,即该约束无效,尽管它在 express 版本上运行良好。

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY); CREATE TABLE [B] (AKey int NOT NULL FOREIGN KEY REFERENCES A(AKey));

【问题讨论】:

在发布此帖子一年半后,psur 出现了更好的答案。还没有测试过,但如果可行,那就太好了。 【参考方案1】:

在精简版你不应该写FOREIGN KEY关键字,你应该省略它并从REFERENCES关键字开始定义外键约束:http://msdn.microsoft.com/en-us/library/ms173393(v=sql.100).aspx

所以在你的情况下你应该写:

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY);
CREATE TABLE [B] (AKey int NOT NULL REFERENCES A(AKey));

并且不需要ALTER

【讨论】:

我花了两个小时痛苦地尝试使用外键引用 A(AKey)。知道他们为什么这样做吗?【参考方案2】:

因为它适用于特快版,所以我认为我没有犯错。这在精简版中提供了预期的效果,并加入了级联。

CREATE TABLE [A] (AKey int NOT NULL PRIMARY KEY);  
CREATE TABLE [B] (AKey int NOT NULL);  
ALTER TABLE [B] ADD CONSTRAINT references_a FOREIGN KEY (AKey) REFERENCES A(AKey)
    ON DELETE CASCADE ON UPDATE CASCADE;

【讨论】:

以上是关于SQL Server Compact 在创建表中不支持关键字“外键引用”还是我犯了错误?的主要内容,如果未能解决你的问题,请参考以下文章

在具有标识列的 SQL Server Compact 4.0 表中插入的性能呈指数下降

UPDATE table1 FROM table2(使用 Sql Server Compact)

SQL Server Compact Edition - 序列列?

sql server compact edition 数据编辑器

SQL Server Compact“修复实用程序”在哪里?

从 SQL Server Management Studio 查询两个单独的 SQL Compact 数据库