读书人

关于数据库(sqlserver)插入有关问题

发布时间: 2012-06-08 12:55:24 作者: rapoo

关于数据库(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
[解决办法]
探讨
不用删除这个自增了,Insert语句里面不要带有 ID 字段即可。

读书人网 >J2EE开发

热点推荐