数据库主键生成
来源:互联网 发布:企业数据管理制度 编辑:程序博客网 时间:2024/05/16 05:23
--创建
create procedure p_srl
as
select (convert(char(6),getdate(),12) +
replace(convert(char(12),getdate(),14),':','') +
right(newid(),6))
--执行
exec p_srl
--主键用随机数难以保证唯一,在生成主键上要多做校验工作
--处理示例
--创建一个视图,生成编号
create view v_getNo
as
select No=convert(char(6),getdate(),12)
+replace(convert(varchar(12),getdate(),14),':','')
+right(newid(),6)
go
--创建一个函数,目的是得到不重复的一个编号
create function f_No() returns char(21)
as
begin
declare @re char(21)
select @re=No from v_getNo
while exists(select * from tb where bh=@re)
select @re=No from v_getNo
return(@re)
end
go
--创建表,使用这具函数
create table tb(bh char(21) primary key default dbo.f_no(),name varchar(10))
insert tb(name) values('张三')
insert tb(name) values('李三')
select * from tb
go
--删除测试
drop table tb
drop view v_getno
drop function f_no
/*--结果
bh name
--------------------- ----------
0504011356565904832EF 李三
050401135656590EF57B2 张三
(所影响的行数为 2 行)
--*/
--建立用流水号,这样不必为校验生成的编号是否重复而浪费时间
--处理示例
--创建一个视图,得到当前日期信息
create view v_getdate
as
select dt=convert(char(6),getdate(),12)
+replace(convert(varchar(12),getdate(),14),':','')
go
--创建一个函数,取得新编号
create function f_No() returns char(21)
as
begin
declare @re char(15)
select @re=dt from v_getdate
return(
select @re+right(1000001+isnull(right(max(bh),6),0),6)
from tb
where bh like @re+'%')
end
go
--创建表,使用这具函数
create table tb(bh char(21) primary key default dbo.f_no(),name varchar(10))
insert tb(name) values('张三')
insert tb(name) values('李三')
select * from tb
go
--删除测试
drop table tb
drop view v_getdate
drop function f_no
/*--结果
bh name
--------------------- ----------
050401140128590000001 张三
050401140128590000002 李三
(所影响的行数为 2 行)
--*/
- 数据库主键生成策略
- 数据库主键生成
- 数据库主键生成策略
- 数据库主键生成策略
- Oracle数据库生成主键
- 数据库主键生成策略
- Oracle数据库生成主键
- 程序控制数据库主键生成
- 数据库主键ID生成
- 数据库主键UUID生成方式
- 使用数据库序列生成主键
- 数据库主键生成方式分析
- JDBC获得数据库生成的主键
- JDBC获得数据库生成的主键
- 获得数据库自动生成的主键
- 获得数据库自动生成的主键
- 获得数据库自动生成的主键实例:
- 获得数据库自动生成的主键
- c#.net常用函数和方法集
- 在程序中加载控件
- C++ -- dynamic_cast
- 页面倒数计时并自动跳转的脚本
- Js Eval函数资料
- 数据库主键生成
- Grub加密
- 我是新手,我怕谁?
- MFC类结构图
- 分清SQLServer中易混淆的数据类型
- emacs移动光标
- CSS兼容IE6,IE7,FF的技巧
- 《C++.GUI.Programming.with.Qt.4》读书笔记Chapter 1~2
- jdk与oracle的jdk版本冲突: