INSERT INTO PB_ENTRY (ENTRY_ID, ENTRY_FNAME, ENTRY_LNAME) VALUES ((SELECT MAX(ENTRY_ID)+1 FROM PB_ENTRY),'Adam','Clark');
这句话在mssql里面改怎么写?
[b]问题补充:[/b]
就是不想用identity呢,还有触发器也不用,有办法解决嘛?
[quote]MAX(ENTRY_ID)+1[/quote]
应该避免用这种方式进行插入,可能楼主认为这样可以很好的插入连续的ID,但这样做存在着很大的风险。当两个insert语句同时执行时,会造成两行id一样的数据,也许很多人认为这种情况是不可能发生的,但我们项目中就真实的遇到过这种情形。
所以能用标识列的,就尽量用标识列。楼主这里不想用标识列,可以说一下原因吗?看一下有没有什么替代的方案。
首先直接修改ENTRY_ID的字段类型为 int IDENTITY(1,1).
然后直接执行:
[code="sql"]INSERT INTO PB_ENTRY (ENTRY_FNAME, ENTRY_LNAME)
VALUES ('Adam','Clark'); [/code]
就可以了.
附测试:
[code="sql"]create table PB_ENTRY
(ENTRY_ID int IDENTITY(1,1),
ENTRY_FNAME varchar(20),
ENTRY_LNAME varchar(20))[/code]
[code="sql"]INSERT INTO PB_ENTRY (ENTRY_FNAME, ENTRY_LNAME)
VALUES ('Adam','Clark')[/code]
create table PB_ENTRY
(ENTRY_ID int IDENTITY(1,1),
ENTRY_FNAME varchar(20),
ENTRY_LNAME varchar(20))
把该字段设置为自增类型就可以了:int IDENTITY(1,1),
还有就是用一个序列来控制该字段也可以