关于数据库(sqlserver)插入问题
SQL code
CREATE TABLE M_NAMES (
ID INT IDENTITY(1, 1), --ID
CLASS_CD TINYINT NOT NULL, --暘椶
NAME_CD SMALLINT NOT NULL, --嬫暘
FULL_NAME NVARCHAR(60), --柤徧
SHORT_NM1 NVARCHAR(10), --棯徧1
SHORT_NM2 NVARCHAR(20), --棯徧2
REMARK1 NVARCHAR(40), --旛峫1
REMARK2 NVARCHAR(40), --旛峫2
DIV1 NVARCHAR(2), --嬫暘1
DIV2 NVARCHAR(3), --嬫暘2
DIV3 NVARCHAR(4), --嬫暘3
INS_DATE DATETIME, --搊榐擔
UPD_DATE DATETIME, --峏怴擔
VERSION INT NOT NULL, --僶乕僕儑儞
CONSTRAINT PK_NAMES PRIMARY KEY (ID),
CONSTRAINT U_NAMES UNIQUE (CLASS_CD,NAME_CD)
)
CREATE INDEX INDEX_NAME ON M_NAMES(CLASS_CD,NAME_CD)
时候报错 :违反主键的PK_NAMES的约束。对象' dbo.M_NAMES “你不能插入重复键。
我是重tet文件里读出一条记录插入数据库的。怎么样修改者张表才能正确把数据正确的插入数据库啊。
------解决方案--------------------
你这张表的ID,已经是自增序列了,正常操作是不会出现主键重复的。
说明你所导入的text文件中的记录,其ID,跟数据库中已有表数据的ID存在重复。
这种情况下,如果你不能把数据库中现有记录清空的话(也就是说你并不是在做一个恢复操作),那么你就只能是修改text文件中记录的ID序列号,常用的做法是固定增加一个很大的数。
比如固定增加 80000000:
text文件中ID是 123,那么你写数据库时,ID就改为:80000123
------解决方案--------------------ID INT IDENTITY(1, 1), --ID
修改id属性 改成否 如图
------解决方案--------------------1.insert into M_NAMES(CLASS_CD, NAME_CD, ......) vlaues(?,?,?,?,?,?,?,?,?)";
按照M_NAMES 表结构应该是13列。不算 ID
2.DATETIME类型,null的时候,用setString,有点问题。最好用setNull
------解决方案--------------------