Sql server 2012 SQL Server:列具有不同数据类型时的组合主键问题
看到我的代码它不工作,但无法理解为什么 我试图创建具有不同数据类型的列的复合pk 当我尝试这个的时候Sql server 2012 SQL Server:列具有不同数据类型时的组合主键问题,sql-server-2012,Sql Server 2012,看到我的代码它不工作,但无法理解为什么 我试图创建具有不同数据类型的列的复合pk 当我尝试这个的时候 CREATE TABLE [dbo].[ControllerActionItems]( [ControllerName] [varchar](50) NULL, [ActionName] [varchar](50) NULL, [RoleID] [int] NULL, primary key ([ControllerName], [ActionName],[Ro
CREATE TABLE [dbo].[ControllerActionItems](
[ControllerName] [varchar](50) NULL,
[ActionName] [varchar](50) NULL,
[RoleID] [int] NULL,
primary key ([ControllerName], [ActionName],[RoleID])
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
正在获取此错误消息
Msg 1709,第16级,状态1,第2行,当
表中没有文本、ntext、图像、varcharmax、nvarcharmax、,
非FILESTREAM varbinarymax、xml或大型CLR类型列
已解决的更新代码
如错误所述,您需要一个指定的列来使用TEXTIMAGE_,例如如果您使用varcharMAX而不是varchar50。然而,根据您所做的,无论如何似乎都是多余的,因为默认行为是在主目录中存储大文本值列 除非表中确实有一个大格式列,否则只需从SQL语句中删除[PRIMARY]上的TEXTIMAGE即可。因此,删除[PRIMARY]上的TEXTIMAGE即可
CREATE TABLE [dbo].[ControllerActionItems](
[ControllerName] [varchar](50) NOT NULL,
[ActionName] [varchar](50) NOT NULL,
[RoleID] [int] NOT NULL,
primary key ([ControllerName], [ActionName],[RoleID])
)