第一次使用这个数据库,因为我需要一个可移植的类型,到目前为止一直很头疼。我似乎无法弄清楚代码有什么问题。
这是我正在尝试运行的东西 - 它是西班牙文,但你得到了它的要点:
create table UsuarioRol
(
UsuarioRolId int primary key identity(1,1),
Nombre nvarchar(64) not null,
NivelAutoridad int not null
)
create table Usuario
(
UsuarioId int primary key identity(1,1),
UsuarioRolId int foreign key references UsuarioRol(UsuarioRolId),
Login nvarchar(64) not null,
Password nvarchar(64) not null
)
我收到错误:
--------------------------- Microsoft Visual Studio --------------------------- SQL执行错误。
执行的SQL语句:create table UsuarioRol
(
UsuarioRolId int主键标识(1,1),
Nombre nvarchar(64)not null,
NivelAutoridad int not null
)
创建表Usuario
(
UsuarioId int主键标识(1,1),,
UsuarioRolId int外键引用Usua ...错误来源:SQL Server Compact ADO.NET数据提供程序错误消息:出现错误 解析查询。 [令牌行号= 8,令牌行偏移= 1,令牌 错误=创建]
---------------------------确定帮助
我不明白语法中可能出现的问题。我在这里错过了什么吗?
即便尝试过,我也会遇到同样的错误。
在常规的'SQL Server数据库上运行完全相同的TSQL,运行完美。
我可以断定SQL Compact不支持外键吗?
答案 0 :(得分:3)
我不确定SQL Server CE是否支持该语法。以下应该有效:
create table UsuarioRol
(
UsuarioRolId int primary key identity(1,1),
Nombre nvarchar(64) not null,
NivelAutoridad int not null
);
GO
create table Usuario
(
UsuarioId int primary key identity(1,1),
UsuarioRolId int,
Login nvarchar(64) not null,
Password nvarchar(64) not null
)
GO
ALTER TABLE [Usuario] ADD CONSTRAINT [FK_Usario_UsarioRol]
FOREIGN KEY ([UsuarioRolId]) REFERENCES [UsuarioRol]([UsuarioRolId]);
GO
<强>更新强>
实际上,你应该使用的东西,只需删除语法中的“外键”:
create table UsuarioRol
(
UsuarioRolId int primary key identity(1,1),
Nombre nvarchar(64) not null,
NivelAutoridad int not null
);
GO
create table Usuario
(
UsuarioId int primary key identity(1,1),
UsuarioRolId int references UsuarioRol(UsuarioRolId),
Login nvarchar(64) not null,
Password nvarchar(64) not null
);
GO
或者这也应该有效:
create table UsuarioRol
(
UsuarioRolId int primary key identity(1,1),
Nombre nvarchar(64) not null,
NivelAutoridad int not null
);
GO
create table Usuario
(
UsuarioId int primary key identity(1,1),
UsuarioRolId int,
Login nvarchar(64) not null,
Password nvarchar(64) not null,
foreign key (UsuarioRolId) references UsuarioRol (UsuarioRolId)
);
GO
来源:http://msdn.microsoft.com/en-us/library/ms173393(v=SQL.110).aspx
答案 1 :(得分:0)
您只能使用SQl Server Compact一次运行一个语句,因此根据您使用的工具,您必须至少与GO和新行分开。
答案 2 :(得分:0)
不是这个,
UsuarioRolId int foreign key references UsuarioRol(UsuarioRolId),
但是这个。
UsuarioRolId int references UsuarioRol(UsuarioRolId),