社区
C#
帖子详情
如何在sql中自动生成guid
qiyuesuper
2010-10-11 10:19:38
请详细解答下,并附源码,谢谢
...全文
19709
10
打赏
收藏
如何在sql中自动生成guid
请详细解答下,并附源码,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
damon08708
2011-07-21
打赏
举报
回复
谢谢了,我刚好要用!!!!
sprc_lcl
2010-10-11
打赏
举报
回复
写在sql语句里
newid()是个函数取的是唯一码(GUID)
如果不明白想想getdate()是个啥玩意
sprc_lcl
2010-10-11
打赏
举报
回复
写在sql语句里
newid()是个函数取的是唯一码(GUID)
如果不明白想想newdate()是个啥玩意
yin15133902295
2010-10-11
打赏
举报
回复
newid()
qiyuesuper
2010-10-11
打赏
举报
回复
我是新手,以前没用过,谢谢了
qiyuesuper
2010-10-11
打赏
举报
回复
这个源码写在哪
bancxc
2010-10-11
打赏
举报
回复
declare @a nvarchar(40)
select @a=newid()
bancxc
2010-10-11
打赏
举报
回复
select newid()
sprc_lcl
2010-10-11
打赏
举报
回复
select newid()
powerdesigner
GUID
uniqueidentifier测试数据生成补丁
修正powerdesigner无法为
SQL
SERVER2005、2008
自动生成
GUID
数据类型的测试数据问题,解压后直接覆盖相关文件。 建立test data profile,进行相关设置即可
自动生成
GUID
测试数据。 具体设置可参照博文:http://blog.csdn.net/mlemon/archive/2010/04/26/5528470.aspx
Guid
转换为oracle存储格式
将
Guid
的格式转换为oracle的识别的格式
sql
server数据库主键的生成方式小结(
sql
server,my
sql
)
主键的生成方式主要有三种: 一. 数据库
自动生成
二.
GUID
三. 开发创建 严格讲这三种产生方式有一定的交叉点,其定位方式将在下面进行讲解。 第一种方式,主要将其定位在自增长的标识种子:可以设置起始数值,及增长步长。其优点在于使用时完全将并发任务交于数据库引擎管理,你不用担心存在多用户使用的时候会产生两个相同的ID的情况。其缺点也在于此,多数的数据库不提供直接获取标识ID的方式,对于开发人员来说产生ID的方式是透明的,开发人员几乎无法干预此项。对于数据的迁移也不是很方便。 由于存在上面的利弊,这种自增长的ID一般多用于设计基础表(系统运行的基础信息,如员工表)主键,而极少(根本不)用于主
数据库主键设计原则.txt
数据库主键设计原则 或许大家都设计过数据库,也为表定义过主键,今天我想阐述的是,应该如何正确的设计一个主键,在以往的一些资料
中
,都没有提及到主键设计的原则. 我为此总结了一下: 1.是否要采用
GUID
作为主键 用
GUID
作主键有它的优势与不足.优势是
GUID
具有唯一性,在任何情况下,可以产生全球唯一的值.这是
GUID
最大的优势,也方便数据导入, 比如要求从另一个系统
中
把数据导入进来,那么,不用担心,导入时,会导致主键冲突.不足是
GUID
值太复杂.不易记忆, 因为有时,难免我们会用记录的方式,来进行记录判断.而且数据太长,影响数据库效率.
GUID
的产生不是以一定的次序产生, 对于按主键物理排序的数据库来说,如果在记录的前部插入一条记录,可能会导致后面N次方的数据条数后移.这将导致数据插入效率. 因此
GUID
的采用应该要慎重. 2.是否要采用自动递增的方式 对于以前谈到的主键,要求唯一性,因此大家都用自动递增的方式.这样的方式是非常不可取的.可能是为了方便插入记录时,不必去人为创建主键值. 以为这样会方便,其实不是的.带来的麻烦要远远胜于这种所谓的"方便".第一:数据导入不方便,经常会有从另一系统导入数据进来,自动递增的主键, 将不允许原表
中
的ID被导入进来.这会导致主键丢失.第二:对于象订单这样的有主外键的表来说,如果订单的"主档表"主键是
自动生成
的. 那么在保存一个订单时,会要求对主档表与明细表同进行事务保存,而此时,先要生成一条订单,然后取出这个订单
自动生成
的主键, 然后再把此作为明细表的一个外键,进行明细的保存.这过程
中
,将变以复杂而且不可行.事务如何处理.订单主档表插入记录后, 要是明细保存时遇到错误,主档表记录还要进行删除.烦.插入成功以后,还要取出产生的最大值.这将是一个严重的浪费. 记录多的话会影响速度,而且会存在并行插入.导致获取的记录可能是不正确的. 因此在以上的严重问题下,请不要采用自动递增方式. 3.是否要采用int型作为主键 以前大家都采用int型,都是出来主键都是数字导致的.其实我们也明白.并不是只是数字的东西就是数字型的.比如电话号码等. 因此对于主键,采用 int型的优势是速度快,插入,查询时都可能会比其他的方式快.但我这种快的效果也未必有多明显, 比如以varchar(15)为例,物理主键排序的数据,会自动以主键进行物理数据排序.因此,就算是字符型的数据,在插入时也会插入到相应的物理位置上, 也就是说,在插入时可能会影响一些速度.但在以后的查询
中
,速度影响不会太明显.而我要说的,不采用int型作为主键,不是说,里面不存数据. 我还是建议大家在主键
中
存放数字,这样的排序比较要比夹杂字母的排序来的快,之所以要采用字符型,也是为以后的数据导入作准备, 有一天,会要求从其他表导入数据时,可以在导入数据的主键上加一个特定字母来避免与原主键冲突.比如在导入数据的主键前加一个"N"字母. 这也就不用担心,要求导入数据表
中
的主键是数字型还是字符型了. 4.是否采用编号来定义主键 这个问题是老生常谈了.主键设计有个原则,就是主键不应具有任何实际意义.这条其实是非常重要,有人就是觉得编号本身是唯一的, 可以作为主键用,但可能会为以后带来麻烦.因为带有实际意义的字段,还是存在被修改的可能性.而对于主键最大的忌讳就是修改主键, 这可能会导致非常严重的不可估计的后果.比如学生编号,平时以为永远不会修改,但修改的可能还是会存在. 还有一种,表面上是唯一的,但实际上应该是允许重复的.我举个例子,订单吧,订单编号应该是唯一吧.是的.可是会存在这样的情况, 一张原来的订单是因为某个原因,要求订单作废.那好给订单的状态标识为"cancel".然后允许再次录入同样编号的订单. 因此.对于这样的情况下在,虽然有效的订单编号只有一个,但在数据库角度会允许编号重复. 所以不管如何,还是建议大家为表都建一个没有任何意义的主键,如ID. 因此,总结一下,我在设计主键,会采用字符型的.不采用自动递增,在新增记录时,系统生成主键值.一般为全数字进行存入, 至于主键值的生成规则,可以按需求进行规则定义.如果没有特殊的要求, 只是为了保持唯一,可以定义一个字段存放一个数值.在生成时,自动加一.然后再存回去.这也比从一个表
中
寻找最大值要来的快吧. 目前一个比较好的主键是采用
GUID
,当然我是推荐主键还是字符型的,但值由
GUID
生成,
GUID
是可以
自动生成
,也可以程序生成 ,而且键值不可能重复,可以解决系统集成问题,几个系统的
GUID
值导到一起时,也不会发生重复,就算有"o"老数据也可以区分,而且效率很高, 在.NET里可以直接使用System.
Guid
.New
Guid
()进行生成,在
SQL
里也可以使用 NewID()生成。 优点是: 同 IDE
Sql
server 生成
guid
Sql
server 生成
guid
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章