仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 756|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:SQL Server 开辟之 利用触发器主动编号...

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。server|触发器利用SQLServer创立数字范例的字段,能够设置为主动编号。但良多时分其实不能满意我们的需求,比方为先生编号时,大概要用到年级、系别等再加下流水号举行编号。上面给一个复杂的例子,利用触发器来举行主动编号。--创立测试表ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[usertable])andOBJECTPROPERTY(id,NIsUserTable)=1)
droptable[dbo].[usertable]
GOcreatetableusertable(useridvarchar(20),usernamenvarchar(20))
go--创立触发器
createtriggertg_insertonusertable
forinsert
as
declare@usernamenvarchar(20)
declare@useridvarchar(20)
declare@numint
declare@strNumvarchar(20)
declare@prefixvarchar(10)
declare@Numlenint
declare@strDatevarchar(20)
--猎取以后日期
set@strDate=substring(convert(varchar(10),getdate(),112),1,8)
--设置流水号的长度
set@Numlen=4
--设置前缀
set@prefix=S
select@userid=max(userid)fromusertable
whereuseridlike@prefix+@strDate+%
if@useridisnull
set@num=0
else
set@num=cast(replace(@userid,@prefix+@strDate,)asint)
set@num=@num+1
set@strNum=cast(@numasvarchar(10))
while(len(@strNum)<@Numlen)
set@strNum=0+@strNum
set@userid=@prefix+@strDate+@strNum
select@username=usernamefrominserted
rollback
insertintousertablevalues(@userid,@username)go--测试insertintousertable(username)values(aa)
go
insertintousertable(username)values(bb)
go
insertintousertable(username)values(cc)
go--显现数据
select*fromusertable
go
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。
乐观 该用户已被删除
沙发
发表于 2015-1-19 09:51:25 来自手机 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
再见西城 该用户已被删除
板凳
发表于 2015-1-25 11:05:46 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
飘灵儿 该用户已被删除
地板
发表于 2015-2-2 21:50:28 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
金色的骷髅 该用户已被删除
5#
发表于 2015-2-8 07:38:53 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
山那边是海 该用户已被删除
6#
发表于 2015-2-25 00:37:53 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
分手快乐 该用户已被删除
7#
发表于 2015-3-7 14:51:05 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-15 07:47:09 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
第二个灵魂 该用户已被删除
9#
发表于 2015-3-21 22:24:27 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表