解决方案 »

  1.   

    批量插入1万条数据:
    DECLARE @i INT
    SET @i = 1
    while(@i <= 1000)
    BEGIN
    exec dbo.insert_data @i, '压力传感设备', 1, 29.9
    SET @i = @i+1
    END
      

  2.   

    修改一下,可以先truncate table dev 表,然后DECLARE @i INT
    SET @i = 1
    while(@i <= 10000)
    BEGIN
    exec dbo.insert_data @i, '压力传感设备', 1, 29.9
    SET @i = @i+1
    END
      

  3.   

    你的主键是哪个?nodid没重复行是因为插入不成功
      

  4.   

    消息 2627,级别 14,状态 1,过程 insert_data,第 23 行
    违反了 PRIMARY KEY 约束 'PK_dev'。不能在对象 'dbo.dev' 中插入重复键。
    说明你表中应该有个字段dev有主键约束,而你给表插入数据没有包括该主键字段,系统会自动给该字段空值,但主键字段不允许存在两个及两个以上的空值,所以出错!你必须在插入其他字段值得时候也给主键字段插入值,或者给主键字段设置
    dev int identity(1,1) 如果数据类型符合的话,这个应该也可以解决
      

  5.   

    主键是 NodId。我在另一个数据库里面建了一个一样的表,只是把NodId的主键属性去掉了,就可以插入了,发现插入的数据里面NodId没有重复的行,就不明白既然没有重复的行,那前面那个表里面为什么就插入数据不成功呢(报错是因为Primary key重复啊啥的)
      

  6.   


    可是我就四个字段,存储过程里面对应的也就四个字段。“给表插入数据没有包括该主键字段”是啥意思?存储过程就一句话,是不是那个有问题呢?(我初接触SQL)
      

  7.   

    create procedure insert_data(@NodId int, @NodName varchar(20), @Flag tinyint, @Value float)
    AS BEGIN
        insert into dev(nodid,nodname,flag,value) values(@NodId, @NodName, @Flag, @Value)
    END
    你的数据有null值吗?
      

  8.   


    没有,这是调用的过程:
    DECLARE @i INT
    SET @i = 1
    while(@i < 1000)
    BEGIN
    exec dbo.insert_data @i, '压力传感设备', 1, 29.9
    SET @i = @i+1
    END
      

  9.   


    你可以把你的表结构贴出来,如果表中有数据也贴出来,这样可以更利于解决问题,表中所有主键字段是否有从表关联?按道理如果你是表中所有字段插入数据,应该没错啊create table dev
    (
    NodId int primary key not null,
    NodName varchar(20) not null,
    Flag tinyint not null,
    Value float not null
    )
      

  10.   

    我要是双机
        消息 2627,级别 14,状态 1,过程 insert_data,第 23 行
        违反了 PRIMARY KEY 约束 'PK_dev'。不能在对象 'dbo.dev' 中插入重复键。
    这个错误,它会指向调用里面的这一行:
        while(@i < 1000)
        为啥??
      

  11.   

    如楼上版主所言,主键重复值问题,主键字段的值不允许重复,目测插入值nodid没有重复,那么应该是原表数据和要插入的数据有重复!