日期:2014-05-18  浏览次数:20811 次

---------???----------
比如我在数据库的表Account里添加了3条数据
id(自动编号) accountID name

  1 admin 张三
  2 user 李四
  3 test 王五

然后我又删除了第三条数据
我怎样知道这张表以前有多少条记录
(我做一个编号唯一的功能,这条记录要是删除了,
这个编号就不能在用了的意思,不知道各位以前是怎样做的)

------解决方案--------------------
这个数据库会为你做好的呀,你只要把id设为自动就行了
------解决方案--------------------
用数据库里的自动生成主键id功能就可以解决
------解决方案--------------------
自动生成主键就可以
------解决方案--------------------
你的ID既然是自动编号,如果是SQLSERVER 就设置ID标识为1,并且从1开始自增,那么你删除3条记录后,再次添加记录,ID是从4开始的,而不是1。
你说的需求实际上就是数据库ID自增的功能。
如果是mysql,建立ID字段时“id int(4) auto_increment not null primary key”就可以了。
------解决方案--------------------
如果你非要这样做的话..
我认为可以这样做:
把ID不要设成自动增长,而是设为int、主键
每次新添加记录时,先查询出这张表中最大的ID是多少
select max(id) from yourtable;
int maxid=...
insert into yourtable values(maxid+1,'user','李四');


而且你删除的时候麻烦就来了
比如你删除ID=6的,你就得把ID为6以后的数据ID全部减1
------解决方案--------------------
实际上是没人这样做的,我不知道你得到上次共有多少条数据干什么..
这些历史记录或者操作一般都是记录到日志文件中的
------解决方案--------------------
你的意思就是删除以后还要保存原记录 ?
那可以用数据库本身实现,也可以用代码实现。 
用数据库实现的话,你就再建一张表,然后设置触发器,如果发现数据有删除操作的话将内容记录到新表里以备以后查询。
用代码实现的话,在添加到数据库以前,遍历对象,每条记录生成连续ID。以后就可以根据这个ID来记录该条数据所作改变。
------解决方案--------------------
你要在插入谁之前把谁显示出来 ??
------解决方案--------------------
明白楼主的意思了,执行如下语句:
select SCOPE_IDENTITY() from Account;
当然首先要保证“id”列是标识,identity(1,1)
------解决方案--------------------
1.创建一个临时表,专门对这个数据库的删除、新增操作进行管理和记录。
2.不要对数据实行物理删除,增加两个字段,一个为删除表示位,一个为时间。这样你就可以对上一次的记录数进行统计了。
------解决方案--------------------
在数据库里加一字段叫state

state的值是1代表是现在存在的,为0说明已经被删除

每次遍历数据的时候只选state是1的记录,删除操作就是把要删掉的记录的state字段设置成0

如果想看已经被删除的记录就看state是0的记录就可以了

不知道这种办法可不可以解决楼住的问题