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数据库中对应的是什么类型怎么转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)