1.要插入一个空记录前提条件是:表中的每一个字段必须都允许空值。
insert into temp1 values(null,null);
null值要和字段数匹配!
2.是否有时间?如果有的话作一VIEW然后用SELECT TOP即可!
insert into temp1 values(null,null);
null值要和字段数匹配!
2.是否有时间?如果有的话作一VIEW然后用SELECT TOP即可!
调试欢乐多
insert into table values (default,null,......)
且插入句我用于一存储程中。调用过程时,表不同则字段也不同。此时怎么办??
2、颠倒一下再 select top?太麻烦了。我想直接获取新添加的记录。否则在添加后选取前,再有一人添加了记录,那岂不是乱了?
但如何获得最后一个添加的记录呢?
Eks兄实在不明白,你到底想问的问题是什么?对于插入空记录,chump的方法可行,如果你说是在存储过程中不行,我要问你为什么不改一改你那糟糕的procedure,比如 if @tcParamTableName='UsersTable' begin 。对于如何得知最新添加的记录,可以添加一个时间邮戳字段。对于添加新记录的关键字段问题,我觉得有两种方法可行,一种是CJZ的方法,用的时候是在点击确认存储按钮时才取最大值,当然不仅是慢,而且还是有可能发生错误,不过可能性很小。方法二是用流水号请号的方法(我也是学的),另建一个表(如:TableA)存储可用的最新关键字的值,使用时,调用存储过程,或在工作站上执行SQL语句,得到最新的ID,再经过一定算法,把计算出来新的ID存回TableA表中,备下次用,虽然有些笨拙,不过认真想起也不错。
RS.addNew
RS(field1) = "fsag"
RS(field2) = "fsag"
RS(field3) = "fsag"
RS.update
这样你就可以得到当前记录的所有字段值了(包括自动递增的id)
在一个网络数据库中插入一个空记录,记录中有一个字段是自动递增的ID。然后再对该记录进行编辑。因此,在完成插入后,能返回刚插入记录或是ID。
我想用存储过程来完成以上过程。
我现已在使用手动递增流水号的笨办法进行操作了,另建了一个流水号记录文件,用于存储当前流水号最大值。但我觉得存在一个问题:
当用户1申请新建记录时,我读取了流水号,然后对流水号加一得出新的流水号,再写回原文件。但在我读出数据后、写回之前,用户2申请新建记录,又读取了原来的流水号。这样一来,这两个用户的流水号是重复的了。
CJZ的方法也同样存在上述问题。
我原想用加锁的方法解决,但我在SQL7.0中没找到锁。我现在只有在asp程序中使用application.lock。咋办???
使用:RS.open "select * from tablename where fieldname = null",objConn,3,3
RS.addNew
RS(field1) = ""
RS(field2) = ""
RS(field3) = ""
RS.update id = RS("id")
这样你就可以得到当前记录的所有字段值了(包括自动递增的id)
这也不行吗?我可是一直都用它解决此类问题的。
在我插入记录后,调用@@identity前,有人插入新记录怎么办?