/****** Object: Table [dbo].[ttt] Script Date: 2008-12-15 17:11:25 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ttt]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ttt]
GO/****** Object: Table [dbo].[ttt] Script Date: 2008-12-15 17:11:26 ******/
CREATE TABLE [dbo].[ttt] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[time] [datetime] NULL
) ON [PRIMARY]
GOALTER TABLE [dbo].[ttt] ADD
CONSTRAINT [PK_ttt] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GOinsert into ttt(name,time) values('logan',getdate());
insert into ttt(name,time) values('peter',getdate());
insert into ttt(name,time) values('man',getdate());
insert into ttt(name,time) values('lida',getdate());select * from ttt
delete from ttt where name='peter'
insert into ttt(name,time) values('peter',getdate());
select * from ttt结果(一)如下:
1 logan 2008-12-15 17:14:02.840
2 peter 2008-12-15 17:14:02.840
3 man 2008-12-15 17:14:02.840
4 lida 2008-12-15 17:14:02.857结果(二)如下:
1 logan 2008-12-15 17:14:02.840
3 man 2008-12-15 17:14:02.840
4 lida 2008-12-15 17:14:02.857
5 peter 2008-12-15 17:14:02.857
为什么结果(二)里面的name为peter的id值不是2而是5呢?有没有办法将自增列delete之后的id值给收回呢,这样delete之后再insert的话,name为peter的记录的id任然为2呢?
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ttt]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ttt]
GO/****** Object: Table [dbo].[ttt] Script Date: 2008-12-15 17:11:26 ******/
CREATE TABLE [dbo].[ttt] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[time] [datetime] NULL
) ON [PRIMARY]
GOALTER TABLE [dbo].[ttt] ADD
CONSTRAINT [PK_ttt] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GOinsert into ttt(name,time) values('logan',getdate());
insert into ttt(name,time) values('peter',getdate());
insert into ttt(name,time) values('man',getdate());
insert into ttt(name,time) values('lida',getdate());select * from ttt
delete from ttt where name='peter'
insert into ttt(name,time) values('peter',getdate());
select * from ttt结果(一)如下:
1 logan 2008-12-15 17:14:02.840
2 peter 2008-12-15 17:14:02.840
3 man 2008-12-15 17:14:02.840
4 lida 2008-12-15 17:14:02.857结果(二)如下:
1 logan 2008-12-15 17:14:02.840
3 man 2008-12-15 17:14:02.840
4 lida 2008-12-15 17:14:02.857
5 peter 2008-12-15 17:14:02.857
为什么结果(二)里面的name为peter的id值不是2而是5呢?有没有办法将自增列delete之后的id值给收回呢,这样delete之后再insert的话,name为peter的记录的id任然为2呢?
解决方案 »
- oracle11 连接数据库偶尔超时,紧急
- 存储过程 ora-00904 求大神,这个做不了,下面的进行不下去啊!!!
- 这样的sql语句该怎么写?
- 求一ORACLE 中.SQL语句
- 如何清除oracle的安装记录windows
- 数据检索问题,,100分相送!!!!!!!!!!!!
- ^0^请教:路径信息如何保存到表中?
- 我的ora8i中有个两个数据库A、B,我在oem中移去了一个A,在磁盘上A的文件没有删除。现在OEM里面只有B库了,我想把
- flashback table时提示ora-00604错误
- 程序访问不了oracle数据库
- 关于clob的读取
- 为什么在sql*plus中删除数据到空的表,用JAVA的resultSet还能打开?
但是它用序列产生,但是这个系列同样不能再使用曾经使用的ID号
getdate()~汗~
不能跳号的用max,允许跳号用序列。
呵呵,估计楼主是在sql里面碰到类似的问题,然后想oracle里面这样的问题该如何解决呢?所以就发到这个板块了吧!
假设记录号段的表为A,取号之前,在A中查询是否有某些号尚未使用,(开始事务)如果存在则直接取出需要的号(注意对记录加锁,避免并发操作导致取出同一个号),使用取出的号码插入/更新具体业务表,成功后,对原A表中加锁的记录解锁,并更新A表,并提交事务;如果插入/更新业务表失败,则同样解锁