【问题标题】:'Help' The primary key column cannot be generated by the server'Help' 服务器无法生成主键列
【发布时间】:2017-03-08 21:49:43
【问题描述】:

我的创建表代码如下:

CREATE TABLE [dbo].[DeTai](
[ID] [int] IDENTITY(1,1) NOT NULL,
[MaDeTai]  AS ('DT'+right('000000'+CONVERT([varchar](10),[ID]),(6))) PERSISTED NOT NULL,
[TenDeTai] [nvarchar](255) NOT NULL,
[LinhVuc] [nvarchar](255) NOT NULL,
[Nam] [int] NOT NULL,
[MaGV] [varchar](8) NOT NULL,
)

当我使用 linq to sql 插入值时,此消息会出现

服务器无法生成'VarChar(8)'类型的主键列。

我该怎么办?

【问题讨论】:

  • 在哪里声明主键?
  • 逗号太多了,就在你最后一个字段之后
  • 就像@stuartd 已经说过你根本不创建任何主键
  • 查看您的表格,几乎可以肯定 ID 字段是您想要用作主键的字段 - 但您必须明确说明主键...
  • sr 我已经为 [MaDeTai] tks 设置了主键,但它的技能根本不起作用我仍然有那个错误消息:(

标签: c# mysql sql-server linq


【解决方案1】:

你要指定主键,设置身份是不够的

CREATE TABLE [dbo].[DeTai](
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [MaDeTai]  AS ('DT'+right('000000'+CONVERT([varchar](10),[ID]),(6))) PERSISTED NOT NULL,
  [TenDeTai] [nvarchar](255) NOT NULL,
  [LinhVuc] [nvarchar](255) NOT NULL,
  [Nam] [int] NOT NULL,
  [MaGV] [varchar](8) NOT NULL,

  constraint PK_DeTail_ID primary key (ID)
)

【讨论】:

  • sr 我忘记了(主键(MaDeTai))但它仍然无法正常工作:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2016-12-29
  • 2020-06-27
相关资源
最近更新 更多