|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
目标:经由过程该功效代替MSSQL中的表ID列主动递增功效
主题一:怎样经由过程Sequence名失掉一个Sequence值
办法:
1.创立一个表Sequence,保留Sequence的值
2.创立一个存储历程GetNextSequence,以经由过程它失掉下一个Sequence
主题二:怎样经由过程一个表名失掉一个Sequence值
1.创立一个表TableSequence,保留表中的列对应的是哪一个Sequence
2.创立一个存储历程CreateTableSeq,把表TableSequence的内容放进全局一时表@@TmpTableSequence,以进步功能
3.创立一个存储历程GetNextSequenceByTableName,以经由过程它失掉下一个Sequence
主题一:怎样经由过程Sequence名失掉一个Sequence值
办法:
1.创立一个表Sequence,保留Sequence的值
表Sequence:
表名
数据范例
是不是为空
索引
申明
SEQNAME
varchar2(50)
N
PK
Sequence名
STARTWITH
number
N
入手下手值
INCREMENT
number
N
增量
LASTVALUE
number
N
该Sequence最初的值
MINVALUE
number
N
最小值
MAXVALUE
number
N
最年夜值,0暗示无
CYCLE
bit
N
是不是可轮回
2.创立一个存储历程GetNextSequence,以经由过程它失掉下一个Sequence
参数:
SeqNameSequence称号
前往:
下一个Sequence的值,如堕落,前往0
流程:
1.该存储历程经由过程参数SeqName从表Sequence获得LastValue
2.LastValue加上递增或递加值,失掉下一个Sequence值(简称@NewSeq)
3.用@NewSeq更新该笔记录
4.前往@NewSeq
主题二:怎样经由过程一个表名失掉一个Sequence值
1.创立一个表TableSequence,保留表中的列对应的是哪一个Sequence
表TableSequence
表名
数据范例
是不是为空
索引
申明
TABLENAME
varchar2(50)
N
PK
表名
SEQNAME
varchar2(50)
N
Sequence名
2.创立一个存储历程CreateTableSeq,把表TableSequence的内容放进全局一时表@@TmpTableSequence,以进步功能
参数:
无
前往:
无
流程:
1.判别一时表@@TmpTableSequence是不是存在
2.如不存在,创立该一时表(表格局同TableSequence),并从TableSequence获得数据,放进一时表@@TmpTableSequence
3.创立一个存储历程GetNextSequenceByTableName,以经由过程它失掉下一个Sequence
参数:
@TableName表名
前往:
下一个Sequence的值,如堕落,前往0
流程:
1.该存储历程经由过程参数@TableName从表@@TmpTableSequence获得Sequence名(简称@SeqName)
2.经由过程@SeqName从表Sequence获得LastValue
3.LastValue加上递增或递加值,失掉下一个Sequence值(简称@NewSeq)
4.用@NewSeq更新表Sequnce的对应纪录
前往@NewSeq
以上是实际,稍后,我会给出详细做法。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。 |
|