none
【SQL】SQL中的启用标示插入意思 RRS feed

  • 问题

  • 请问在SQL导入到处数据的时候,有个“启用标示插入”,小弟不明白到底是什么意思,在我导入数据的时候,发现点不点这个选项数据都是导入成功的。请问这个选项到底有什么作用呢?请指教谢谢
    2010年6月5日 8:53

答案

  • 导入数据有重复,而你的table1的pk约束不容许你插入重复内容,请检查你的导入数据,或者修改约束。

     


    family as water

    恩,是有重复的,之后我换成不重复的,测试中发现 表之间导入数据如果字段类型都相同的话,导入数据的时候必须得开启“启用标示插入”  如果没有点此项,数据会导入不成功的。也就是你上面所说的 “不选择该选项: B表的ID列,就变成1,2,3,4,5,6 ”    如果不选导入会失败的,呵呵!

    针对你之前说的,再加上我的测试,我总结一下吧;

    一、两表之间导入导出数据,ID字段不可有重复的数据

    二、“启用标示插入”只针对目标表和原表都存在,且两个表结构相同都设有相同主键,这种插入才好用

    三、如果目标表不存在,点击“启用标示插入” 没有任何效果

     

    顺便说一下,能不能麻烦帮我解决一下http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/4f475aa2-4c80-43c7-aed7-d71680b3178e问题,呵呵,多谢多谢了

    • 已标记为答案 jinwb1982 2010年6月7日 3:40
    2010年6月7日 3:24
  • 应该从根本原理的角度来考虑这个问题,建议你查看identity字段的帮助,这个我不多说,对于你的总结,我逐一回复如下:

    一、两表之间导入导出数据,ID字段不可有重复的数据

    :ID字段是否有重复数据是依赖与约束。

    二、“启用标示插入”只针对目标表和原表都存在,且两个表结构相同都设有相同主键,这种插入才好用

    :说法基本没有错误,但是如果你深入了解identity意义,你可以理解的更好,建议你不要用导入导出测试,而直接对一个具有identity字段的表写sql插入数据,是否能插入这个字段数据取决于是否打开表的identity_insert开关。(见一楼回复)

    三、如果目标表不存在,点击“启用标示插入” 没有任何效果

    :如果目标表不存在,当然不会有identity字段,所以不会受这个制约。知其然,知其所以然。


    family as water
    • 已标记为答案 jinwb1982 2010年6月7日 3:40
    2010年6月7日 3:34

全部回复

  • 有些表有如果有identity属性的字段,如果你需要想这个字段插入数据,就需要启用这个。

    或者执行sql :set identity_insert tablename on

    执行完成后,在set off.


    family as water
    2010年6月5日 9:33
  • 导入数据时,欲使用导入数据的自增列编号,需要选择“启用标识插入”。

    2010年6月5日 10:08
  • 点不点没用 那是因为你的表没有自增列~这个选项对表就没效果了

    如果表的某列,比如说ID 具有IDENTITY属性 那么启用标示插入的话 就可以对ID列显示插入数据了

    2010年6月5日 11:59
  • 请问在SQL导入到处数据的时候,有个“启用标示插入”,小弟不明白到底是什么意思,在我导入数据的时候,发现点不点这个选项数据都是导入成功的。请问这个选项到底有什么作用呢?请指教谢谢

    给你举个场景,你就明白了, 如果你的A表有一个ID列,有三个记录分别是7,8,9; 而你的B表也有一个ID列,是定义为identity(1,1),分别也有三个记录,1,2,3,  你把A表导入到B表

    ,对于ID列的变化情况分别如下:

        选择了该选项: B表的ID列,就变成1,2,3,7,8,9

        不选择该选项: B表的ID列,就变成1,2,3,4,5,6

    原理就是楼上的朋友所说的.


    http://blog.csdn.net/cn_sql
    2010年6月5日 21:09
    版主
  • 请问在SQL导入到处数据的时候,有个“启用标示插入”,小弟不明白到底是什么意思,在我导入数据的时候,发现点不点这个选项数据都是导入成功的。请问这个选项到底有什么作用呢?请指教谢谢

    给你举个场景,你就明白了, 如果你的A表有一个ID列,有三个记录分别是7,8,9; 而你的B表也有一个ID列,是定义为identity(1,1),分别也有三个记录,1,2,3,  你把A表导入到B表

    ,对于ID列的变化情况分别如下:

        选择了该选项: B表的ID列,就变成1,2,3,7,8,9

        不选择该选项: B表的ID列,就变成1,2,3,4,5,6

    原理就是楼上的朋友所说的.


    http://blog.csdn.net/cn_sql
    恩,这么一讲果然明白了,谢谢。之前我说为什么点不点都没有什么效果,原来是目标数据库中不存在要导入的表。再次表示感谢
    • 已标记为答案 jinwb1982 2010年6月6日 6:01
    • 取消答案标记 jinwb1982 2010年6月7日 2:37
    • 已标记为答案 jinwb1982 2010年6月7日 2:37
    • 取消答案标记 jinwb1982 2010年6月7日 2:37
    2010年6月6日 6:01
  • 请问在SQL导入到处数据的时候,有个“启用标示插入”,小弟不明白到底是什么意思,在我导入数据的时候,发现点不点这个选项数据都是导入成功的。请问这个选项到底有什么作用呢?请指教谢谢

    给你举个场景,你就明白了, 如果你的A表有一个ID列,有三个记录分别是7,8,9; 而你的B表也有一个ID列,是定义为identity(1,1),分别也有三个记录,1,2,3,  你把A表导入到B表

    ,对于ID列的变化情况分别如下:

        选择了该选项: B表的ID列,就变成1,2,3,7,8,9

        不选择该选项: B表的ID列,就变成1,2,3,4,5,6

    原理就是楼上的朋友所说的.


    http://blog.csdn.net/cn_sql
    恩,这么一讲果然明白了,谢谢。之前我说为什么点不点都没有什么效果,原来是目标数据库中不存在要导入的表。再次表示感谢

    你好,通过你的讲解,自己做了一下实验,发现有一个问题,表A字段 id(主键,自动增一,不为空) name    表B结构与表A相同,连个表的数据不同,在我把表A的数据导入表B的时候,并且选中了“启用标示插入”  出现问题。这与你之前所说的完全不符,请指教。错误提示如下:

    2010年6月7日 2:42
  • 导入数据有重复,而你的table1的pk约束不容许你插入重复内容,请检查你的导入数据,或者修改约束。

     


    family as water
    2010年6月7日 2:57
  • 导入数据有重复,而你的table1的pk约束不容许你插入重复内容,请检查你的导入数据,或者修改约束。

     


    family as water

    恩,是有重复的,之后我换成不重复的,测试中发现 表之间导入数据如果字段类型都相同的话,导入数据的时候必须得开启“启用标示插入”  如果没有点此项,数据会导入不成功的。也就是你上面所说的 “不选择该选项: B表的ID列,就变成1,2,3,4,5,6 ”    如果不选导入会失败的,呵呵!

    针对你之前说的,再加上我的测试,我总结一下吧;

    一、两表之间导入导出数据,ID字段不可有重复的数据

    二、“启用标示插入”只针对目标表和原表都存在,且两个表结构相同都设有相同主键,这种插入才好用

    三、如果目标表不存在,点击“启用标示插入” 没有任何效果

     

    顺便说一下,能不能麻烦帮我解决一下http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/4f475aa2-4c80-43c7-aed7-d71680b3178e问题,呵呵,多谢多谢了

    • 已标记为答案 jinwb1982 2010年6月7日 3:40
    2010年6月7日 3:24
  • 应该从根本原理的角度来考虑这个问题,建议你查看identity字段的帮助,这个我不多说,对于你的总结,我逐一回复如下:

    一、两表之间导入导出数据,ID字段不可有重复的数据

    :ID字段是否有重复数据是依赖与约束。

    二、“启用标示插入”只针对目标表和原表都存在,且两个表结构相同都设有相同主键,这种插入才好用

    :说法基本没有错误,但是如果你深入了解identity意义,你可以理解的更好,建议你不要用导入导出测试,而直接对一个具有identity字段的表写sql插入数据,是否能插入这个字段数据取决于是否打开表的identity_insert开关。(见一楼回复)

    三、如果目标表不存在,点击“启用标示插入” 没有任何效果

    :如果目标表不存在,当然不会有identity字段,所以不会受这个制约。知其然,知其所以然。


    family as water
    • 已标记为答案 jinwb1982 2010年6月7日 3:40
    2010年6月7日 3:34
  • 应该从根本原理的角度来考虑这个问题,建议你查看identity字段的帮助,这个我不多说,对于你的总结,我逐一回复如下:

    一、两表之间导入导出数据,ID字段不可有重复的数据

    :ID字段是否有重复数据是依赖与约束。

    二、“启用标示插入”只针对目标表和原表都存在,且两个表结构相同都设有相同主键,这种插入才好用

    :说法基本没有错误,但是如果你深入了解identity意义,你可以理解的更好,建议你不要用导入导出测试,而直接对一个具有identity字段的表写sql插入数据,是否能插入这个字段数据取决于是否打开表的identity_insert开关。(见一楼回复)

    三、如果目标表不存在,点击“启用标示插入” 没有任何效果

    :如果目标表不存在,当然不会有identity字段,所以不会受这个制约。知其然,知其所以然。


    family as water

    感谢你的解答,对于你的回答我受益匪浅。我会继续学习SQL,
    2010年6月7日 3:40