如何在sql中自动生成guid-CSDN论坛

如何在sql中自动生成guid-CSDN论坛,第1张

SQL 函数 newid()

newid()是个函数取的是唯一码(GUID)

SQL 如下:select newid()

列上的索引。

GUID是根据网卡与统计时间计算出来的唯一标识,可用于离线数据合并

因为无论何时得到的GUID都是唯一的。

你什么数据库啊?

把你建表语句发来看看

sqlserver

insert into 表名 (字段名) values (newid())

oracle

insert into 表名(字段名) values (sys_guid())

mysql

insert into 表名(字段名) values(UUID())

你按你是什么数据库挑着用吧

有点类似JAVA用的UUID,你说的是Uniqueidentifier这个数据类型吧?其实他是对一列数据的描述,这列数据可以把表中数据设定具有唯一性,oracle中建议你使用MD5码这样的,你可以把数据都拿过来放到16个字节字段里面

很简单,先把excel的数据倒到数据库的表中,这个表是你新建的表A。然后把表的数据插入到你的正式表B中

insert into B select newid(), from A

#include "stdafxh"

#include <timeh>

#include <stdlibh>

#include <dosh>

#include <Windowsh>

#include <iostream>

#include <vector>

#include <map>

typedef unsigned __int64 u_int64_t;

typedef unsigned int u_int32_t;

const u_int64_t c_mark_time_stamp = 0xffffffff0000000;/时间戳掩码/

const u_int64_t c_mark_district = 0x00000000fff00000;/服务器区号掩码/

const u_int64_t c_mark_plat = 0x00000000000ff000;/服务器里的平台号掩码/

const u_int64_t c_mark_base = 0x0000000000000fff;/本地ID编号掩码/

//生成所有游戏服务器里全局唯一的ID,可防范于各种合服时ID相同时难处理的问题

u_int64_t GenNewGUID()

{

static u_int32_t baseId = 0;

baseId++;

u_int64_t timeStamp = (u_int64_t)time(NULL);

u_int32_t districtNum = 1;/这个服务器区号可以根据实际情况设置或者获取/

u_int32_t platNum = 1;/这个平台号可以根据实际情况设置或者获取/

u_int64_t newId = ((timeStamp << 32)&c_mark_time_stamp) | ((districtNum << 20) & c_mark_district) | ((platNum << 12) & c_mark_plat) | (baseId & c_mark_base);

return newId;

}

int _tmain(int argc, _TCHAR argv[])

{

std::vector<u_int64_t> idList;

std::map<u_int64_t, u_int64_t> idMap;

DWORD dwLastTime = ::GetTickCount();

DWORD dwCurTime = 0;

u_int64_t uMaxIdOneSec = 4096; // 此算法1秒内支持产生uMaxIdOneSec个GUID,超过此值就会出现重复值

u_int64_t uSecondCnt = 0;//统计运行了多少秒

u_int64_t uSecondOver = 2; // 产生uSecondOver秒后停止,此时将会产生 uMaxIdOneSec uSecondOver 个 GUID

while (true)

{

dwCurTime = ::GetTickCount();

if (dwCurTime - dwLastTime >= 1000)

{

dwLastTime = dwCurTime;

uSecondCnt++;

if (uSecondCnt >= uSecondOver) break;

}

if (idListsize() < uMaxIdOneSec (uSecondCnt + 1))

{

idListpush_back(GenNewGUID());

}

}

for (std::vector<u_int64_t>::iterator it = idListbegin(); it != idListend(); it++)

{

idMap[it] = 0;

}

if (idListsize() > idMapsize())

{

//两个size不相等说明有重复的Id,证明算法失败! 请检查uMaxIdOneSec是否是4096!!

MessageBox(NULL, L"have same id !!!", L"title", MB_OK);

}

/

sqlserver:insert

into

表名

(字段名)

values

(newid())。

oracle:insert

into

表名(字段名)

values

(sys_guid())。

mysql:insert

into

表名(字段名)

values(UUID())。

sql一般指结构化查询语,结构化查询语言(Structured

Query

Language)简称SQL(发音:/ˈes

kjuː

ˈel/

"S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

GUID(全称:Globally

Unique

Identifier),是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

GUID

的总数达到了2^128(34×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

GUID一词有时也专指微软对UUID标准的实现。另外,还有磁盘分区表方案的含义,全局唯一标识分区表是一个实体硬盘的分区表的结构布局的标准。

以上就是关于如何在sql中自动生成guid-CSDN论坛全部的内容,包括:如何在sql中自动生成guid-CSDN论坛、SQL 表已经建立好了 如何在字段中插入GUID数据、请问SQLServer数据库中的Guid类型在Oracle数据库中对应的是什么类型怎么转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9405863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存