社区
C++ Builder
帖子详情
SQL Server2000中是否有 Oracle中的 序列 的概念
wt_sanlian
2007-04-11 08:12:03
rt
...全文
248
9
打赏
收藏
SQL Server2000中是否有 Oracle中的 序列 的概念
rt
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
痞子酷
2007-04-13
打赏
举报
回复
局域网:
客户端唯一标识有代表性的有:
1。IP:16进制,8个字符
2。登陆用户名ID:一般登陆名是唯一的。
等
wt_sanlian
2007-04-12
打赏
举报
回复
呵呵,
”如果有事务时和回滚时麻烦,导致异常问题“ 可以展开说一下吗?
如果用客户端唯一标识的话,客户端唯一标识应存储在什么地方呢,
痞子酷
2007-04-12
打赏
举报
回复
这种方法不好,如果有事务时和回滚时麻烦,导致异常问题。
最好的每一个客户端都要定义唯一行标识。进程根据唯一标识很容易获得唯一序列。
比如:
客户端唯一行标识+YYMMDDHHMI+进程定义的循环序列。
wt_sanlian
2007-04-12
打赏
举报
回复
上网上查了一下,就是自已建立一个表,有一个字段叫KeyName,另一个叫KeyVal
KeyVal 用于保存最新值,获取新的ID时用下面的方法:
declare @keyName varchar(64)
declare @keval int
set @keyname = 'mykey'
update MyKeyTable Set @keyval = keyval = keyval + 1 where keyname = @keyname
select @keyval as newkey
对@keyval 赋值是在一个Update语句中进行的,Update执行在SQL 中应当是原子性的吧!
个人觉得这种方法可以避免多客户端同时生成主键冲突的问题,
大虾们,有没有什么不同观点
wt_sanlian
2007-04-11
打赏
举报
回复
谢谢三十年孤独及我又...
我不想用IDENTITY,主键想自已定义成字符型的,但有多个客户端可能同时对表进行插入,
如果SQL Server 中要有象Oracle中的序列的话就可以解决主键冲突,可SQLServer中好象没有这种东西
sczyq
2007-04-11
打赏
举报
回复
INT NOT NULL IDENTITY
chpst
2007-04-11
打赏
举报
回复
lgjf
我不懂电脑
2007-04-11
打赏
举报
回复
IDENTITY 和 SEQUENCE
Sql Server中,定义一个列为递增列很容易,但我在Oracle中却怎么也找不到设置的方法。不过查了点资料后知道Oracle中有个叫Sequence的对象,产生一个唯一的序列号,类似于Sql Server中的IDENTITY。于是,我做了如下实验:
首先,在Oracle中创建了一个名为TEST_SEQ的Sequence对象,SQL语句如下:
create sequence TEST_SEQ
minvalue 100
maxvalue 999
start with 102
increment by 1
nocache;
语法应该是比较易懂的,最小最大值分别用minvalue,maxvalue表示,初始值是102(这个数字是动态变化的,我创建的时候设的是100,后因插入了2条数据后就自动增加了2),increment当然就是步长了。在PL/SQL中可以用test_seq.nextval访问下一个序列号,用test_seq.currval访问当前的序列号。
定义完了Sequence,接下来就是创建一个存储过程InsertRecordWithSequence:
--这次我修改了test表的定义,和前面的示例不同。其中,UserID是PK。
create or replace procedure InsertRecordWithSequence(UserID out number,
UserName in varchar2,
UserAge in number)
is
begin
insert into test(id, name, age) --插入一条记录,PK值从Sequece获取
values(test_seq.nextval, UserName, UserAge);
/**//*返回PK值。注意Dual表的用法*/
select test_seq.currval into UserID from dual;
end InsertRecordWithSequence;
接下来,就是在C#中进行调用了:
string connectionString = "Data Source=YXZHANG;User ID=YXZHANG;Password=YXZHANG";
string queryString = "InsertRecordWithSequence";
OracleConnection cn = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand(queryString,cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("UserID",OracleType.Number);
cmd.Parameters["UserID"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("UserName","Jack");
cmd.Parameters.Add("UserAge",40);
try
{
cn.Open();
int rowAffected = cmd.ExecuteNonQuery();
Console.WriteLine("{0}行已插入。",rowAffected);
Console.WriteLine("插入行的ID为:{0}",cmd.Parameters["UserID"].Value.ToString());
cn.Close();
}
catch( OracleException ex )
{
Console.WriteLine("Exception occurred!");
Console.WriteLine("The exception message is:{0}",ex.Message.ToString());
}
finally
{
Console.WriteLine("------------------End-------------------");
}
小结:
使用Sequece对象可以很容易地创建唯一序列,在存储过程中的调用也十分方便,只要sequence_name.nextval以及sequence.currval就能得到下一个以及当前的序列值。倒是Dual表值得注意。
痞子酷
2007-04-11
打赏
举报
回复
SQL Server2000中是否有 Oracle中的 序列 的概念
------------------------------
可以说无。
oracle sequence 非常好用。
SQL Server2000 IDENTITY不好用。
我记得SQL Server最初序列我是这样处理的。这是很多年以前的事啦。
客户端唯一标识+日期时间+加上进程自定义的递增序列。
呵呵~~~
sql
server
中
创建类似
oracle
序列
的存储过程
###
SQL
Server
中
创建类似
Oracle
序列
的存储过程 #### 背景介绍 在数据库管理系统(DBMS)
中
,
序列
是一种自增的数据结构,常用于自动产生唯一标识符(如ID)。
Oracle
数据库提供了非常方便的
序列
机制,而
SQL
...
深度对比
Oracle
与
SQL
Server
Oracle
提供了
SQL
*Plus 和
Oracle
SQL
Developer 等工具,而
SQL
Server
则有
SQL
Server
Management Studio (SSMS) 和
SQL
Server
Data Tools (SSDT) 等工具。这些工具支持
SQL
查询、脚本编写、调试等功能,极大...
SQL
SERVER
安装
ORACLE
provider for OLE DB 的连接服务驱动.zip
在Microsoft
SQL
Server
环境
中
,有时候我们需要与其他数据库系统,如
Oracle
,进行数据交互。为了实现这一点,可以借助
Oracle
提供的OLE DB提供程序(
Oracle
Provider for OLE DB),它允许
SQL
Server
通过OLE DB接口...
从
SQL
Server
向
Oracle
迁移的技术实现方案
从
SQL
Server
向
Oracle
数据库迁移的过程
中
,涉及到的数据类型转换、
序列
(sequence)及触发器(trigger)的实现方式是关键的技术点。以下是对这些知识点的详细解析: ### 数据类型转换 ####
Oracle
与
SQL
Server
的数据...
Oracle
与
SQL
Server
的
SQL
语法差异总结1
Oracle
中
有
序列
sequence 对象,无自动增长列,而
SQL
Server
中
无
序列
对象,表
中
有自动增长列。 Select 语法
Oracle
中
的 Select 语法可以将结果集作为表使用,而
SQL
Server
中
的 Select 语法也可以将结果集...
C++ Builder
13,871
社区成员
102,694
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章