首页 > 数据库 >【原创】SQLSERVER 通过 newsequentialid() 获取有序Guid 的注意事项

【原创】SQLSERVER 通过 newsequentialid() 获取有序Guid 的注意事项

时间:2023-04-15 10:44:09浏览次数:57  
标签:uniqueidentifier uuid newsequentialid SQLSERVER 36 char Guid

SQL SERVER 2005版本开始,支持获取有序Guid,函数为:newsequentialid(),使用该函数注意事项:

1、表存在对应类型:uniqueidentifier,可以设置 default 为:newsequentialid() 来自动生成有序Guid

2、字段类型为:uniqueidentifier时,值只能是36位有效格式的字符串,不能为其他格式或空的字符串,而且  SQL语句中不能使用  FieldName = '',这样的比较。

3、父子表建立关系时,如果父表字段是 uniqueidentifier类型,则子表字段也必须是uniqueidentifier类型。
     即:uniqueidentifier类型的字段作为主键时,如果是另一个表的副键,则另一个表的副键也必须是uniqueidentifier类型。

4、SQLSERVER 2008R2 SP3 版本 SMSS 界面中创建关系并保存时,uniqueidentifier类型字段如果存在默认值 :newsequentialid(),会提示错误,且无法保存。

(关于 newsequentialid() 函数更多特点,网上资料很多,这里不再重复赘述)

综合上述分析,最终建议:

1、创建有序Guid字段,可以设置 类型为 char(36)

2,然后通过存储过程或直接代码的形式获取 有序Guid:

alter procedure [dbo].[pro_uuid] 
@Result char(36) output
as
begin
   declare @uuid table (cid uniqueidentifier default newsequentialid(),name char(1))
   insert into @uuid(name) values('')
   select @Result = cid from @uuid
end

-- 调用:

declare @uuid char(36)
exec dbo.pro_uuid @uuid output
select @uuid

以上分析环境为:SQLSERVER 2008R2 SP3 版本,更高版本未作测试。

 

标签:uniqueidentifier,uuid,newsequentialid,SQLSERVER,36,char,Guid
From: https://www.cnblogs.com/reakal/p/17320655.html

相关文章

  • 安装SQLServer20xx 提示:需要安装oracle JRE7 更新 51(64位)或更高版本2种解决办法
    这个报错我们有2种方式可以解决,一个是安装提示所说的JRE7,另外一种比较简单,就是不勾选相关功能就不会要求安装JRE了;一、安装OracleJRE7解决方法:先进下面这个网站安装JDK,安装好后配置环境变量,然后重新安装SQLServer2016即可http://www.oracle.com/technetwork/java/javase/do......
  • SQLServer 查看耗时较多的 SQL 语句
    SELECTTOP20total_worker_time/1000AS[总消耗CPU时间(ms)],execution_count[运行次数],qs.total_worker_time/qs.execution_count/1000AS[平均消耗CPU时间(ms)],last_execution_timeAS[最后一次执行时间],max_worker_time/1000AS[最大执行时间(ms)]......
  • Guide to Regen on VW Passat TDI with Launch x-431 Pro5
    LaunchX-431PRO5openstheeraofinnovativedualdiagnosticmodes(localdiagnosisandSmartLinkremotediagnosis).ItinheritsthepowerfuldiagnosticstrengthofPROseriesandcomeswithmultipleadvantages,suchaswidevehiclemodelcoverage,numer......
  • linux下通过ODBC连接SqlServer
    环境操作系统:Centos7.9数据库:SqlServer2012所需安装包Linux系统的ODBCunixODBC-2.3.11(http://www.unixodbc.org)连接SQLServer或Sybase的驱动freetds-1.3.17(http://www.freetds.org/)安装步骤1、安装unixODBC#解压tarvxzfunixODBC-2.3.11.tar.gzcdun......
  • Spring Quickstart Guide同步构建测试
    进行了前置的配置后,打开IDEA,进行环境构建,第一次运行结果 把JDK更换为17版本后同步成功   输出结果  浏览器运行结果 ......
  • sqlserver 使用脚本创建作业 (by me)
    usemastergo--定义创建作业DECLARE@jobiduniqueidentifier,@jobnamesysnameSET@jobname=N'testInterval'IFEXISTS(SELECT*FROMmsdb.dbo.sysjobsWHEREname=@jobname)EXECmsdb.dbo.sp_delete_job@[email protected]_add_job@job_......
  • SQLServer 客户端链接服务器到Oracle数据库 全攻略
    引言和第三方公司进行接口对接时,发现某一个模块第三方只提供一个视图,还让我们直接调用他们数据库......
  • 迁移学习《Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medica
    论文信息论文标题:Cluster-GuidedSemi-SupervisedDomainAdaptationforImbalancedMedicalImageClassification论文作者:S.Harada,RyomaBise,KengoAraki论文来源:ArXiv2March2023论文地址:download 论文代码:download视屏讲解:click1摘要一种半监督域自适应方法,......
  • 查看SQLSERVER数据库每张表的大小
    ---SQLSERVERUSE[HealthOne]--replaceyourdbname替换你的数据库名字GOSELECTs.NameASSchemaName,t.NameASTableName,p.rowsASRowCounts,CAST(ROUND((SUM(a.used_pages)/128.00),2)ASNUMERIC(36,2))ASUsed_MB,CAST(ROUND((SUM(a.total_pages)-SUM(a.use......
  • MySQL、Oracle、SQLServer、PostgreSQL、DB2、Sybase、GBase、Informix关系型数据库简
    MySQLMySQL是一种开源的关系型数据库管理系统,它是最流行的数据库之一。MySQL具有高性能、可靠性和易用性的特点,支持多种操作系统和编程语言。MySQL的优点包括:优点:开源免费,可自由使用和修改高性能,支持大规模数据存储和高并发访问易于安装和使用,具有良好的文档和社区支持支......