解决方案 »

  1.   

    SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient 
    这个结果在主键列上有重复
      

  2.   

    你的select中有常量,会不会是这个常量重复引起的?
      

  3.   

    楼上已经说的很清楚了,违背了主键约束,主键字段值重复,先找下主键列要么狠点alter table dbo.T_51_001
    drop constraint  dbo.T_51_001.PK__T_51_001__DB0FA398451F3D2B再插入数据试试
      

  4.   

     SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient 
    只要这个结果有两条记录,即表alarmclient 有两条记录
    那么主键就重复了能说的详细点吗,有重复我是知道的,我表格里没有数据为什么会出现重复,我不太明白 c001和c011,是主键,就是22222和11是主键
      

  5.   

    因为 dbo.alarmclient 表不止一条记录,所以插入的多条数据主键都是 (22222,11)!
      

  6.   

    假設T_51_001的主鍵是 c001,而dbo.alarmclient 表中的數據有多條
    而T_51_001的主鍵c001的值都是22222,這樣就引起主鍵對應的數據重複,所以報錯。
      

  7.   


    假設T_51_001的主鍵是 c001,而dbo.alarmclient 表中的數據有多條
    而T_51_001的主鍵c001的值都是22222,這樣就引起主鍵對應的數據重複,所以報錯。
    表中没有数据,我的理解是不应该会出现这个重复的问题,所以我无法理解它为什么给我报这个错
      

  8.   

    表中没有数据,我的理解是不应该会出现这个重复的问题,所以我无法理解它为什么给我报这个错
    你是说dbo.alarmclient 表中没有数据?
      

  9.   

    表中没有数据,我的理解是不应该会出现这个重复的问题,所以我无法理解它为什么给我报这个错
    你是说dbo.alarmclient 表中没有数据?
    alarmclient中是有数据的都是唯一的数据不存在重复的问题
      

  10.   

    楼主语文老师是异次元来的!你自己看下面这部分的执行结果,想想这批数据插入dbo.T_51_001会不会重复。
    SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient 
      

  11.   

    表中没有数据,我的理解是不应该会出现这个重复的问题,所以我无法理解它为什么给我报这个错
    你是说dbo.alarmclient 表中没有数据?
    alarmclient中是有数据的都是唯一的数据不存在重复的问题
    原来如此,虽然有数据,但是,你只取列firstreadtime,lastreadtime,而其它的需要插到表T_51_001的列,都是一些常量,包括主键列,22222,11,作为主键数据就都是重复的~~ INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient alarmclient 表中只要有两列,那么以上语句的效果就类似
     INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    VALUES(22222,'23',firstreadtime1,lastreadtime1,'5' ,'9','11') INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    VALUES(22222,'23',firstreadtime2,lastreadtime2,'5' ,'9','11')
    这样,那么第一次插入不会有事,第二次就违反主键了
      

  12.   

    表中没有数据,我的理解是不应该会出现这个重复的问题,所以我无法理解它为什么给我报这个错
    你是说dbo.alarmclient 表中没有数据?
    alarmclient中是有数据的都是唯一的数据不存在重复的问题
    原来如此,虽然有数据,但是,你只取列firstreadtime,lastreadtime,而其它的需要插到表T_51_001的列,都是一些常量,包括主键列,22222,11,作为主键数据就都是重复的~~ INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient alarmclient 表中只要有两列,那么以上语句的效果就类似
     INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    VALUES(22222,'23',firstreadtime1,lastreadtime1,'5' ,'9','11') INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    VALUES(22222,'23',firstreadtime2,lastreadtime2,'5' ,'9','11')
    这样,那么第一次插入不会有事,第二次就违反主键了
    good job,那我怎么样才能让它实现插入一次的,对应的主键做对应的插入
      

  13.   

    c001,c002
    这两列对数据有什么要求吗?
    没有的话
     INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()),'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient 
    类似这样,不让主键重复就可以了
      

  14.   

    这样写的话会出现多次写入的问题,假设我只想写入一条呢?举例:alarmclient中的有一条记录为c001 = 123456,现在我想把alarmclient中的数据写入到t_51_001中去,我只要也这一条的,不要写别的。如果把c001写死的话又会出现刚才的问题?
      

  15.   

    INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    SELECT c001,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient WHERE c001 = 123456
    类似这样,在条件上处理,这样就没有把c001写死话说,如果你的alarmclient表中的c001是和表T_51_001的c001对上的话,
    如果需要把alarmclient的全部信息插入表T_51_001的话,把上面的条件去掉就可以了
      

  16.   


    INSERT INTO dbo.T_51_001( c001,c002,c003,c004,c005,c009,c011) 
    SELECT 22222,'23',firstreadtime,lastreadtime,'5' ,'9','11'
    FROM dbo.alarmclient 你的表dbo.T_51_001没有数据!!但你的dbo.alarmclient应该有数据吧!!
    如果你插入常量的列是主键,那绝对是报错的!!除非dbo.alarmclient只有一条数据!!明白了吗