Insert Into table1 Field1,Field2 ,……
Select ……From table2在进行以上操作时如何让table1表的Field1字段值自动增加(此字段类型为int,但不为identity,并且也不允许将期更改为identity,并且table1表中已有记录)
Select ……From table2在进行以上操作时如何让table1表的Field1字段值自动增加(此字段类型为int,但不为identity,并且也不允许将期更改为identity,并且table1表中已有记录)
1、如上所说,每次插入一条,插入前用Select max(field1)+1 from table1 计算下一条记录的field1值。
2、如果是SQL Server2000的话,编写个触发器吧。
'将现有的 Field1 按降序排序,取出最大的,在自加 1 即可!Dim cSql As String
Dim nId As Integer
Dim adoCnn As New ADODB.Connection
Dim adoRst As ADODB.Recordset'... '用 adoCnn 连结数据库cSql = "SELECT * FORM table1 ORDER BY Field1 DESC"
Set adoRst = adoCnn.Execute(cSql, , adCmdText)
With adoRst
If .RecordCount = 0 Then
nId = 1
Else
.MoveFirst
nId = !Field1 + 1
End If
.AddNew
!ID = nId
.Update
End With'或者以下语句也可以:
cSql = "SELECT MAX(Field1) AS nID FROM table1"
Set adoRst = adoCnn.Execute(cSql, , adCmdText)
With adoRst
If .RecordCount = 0 Then
nId = 1
Else
nId = !nId + 1
End If
.AddNew
!ID = nId
.Update
End With
End Sub
Select max(Field1) from table1
然后根据结果对其加一处理。
再多个客户端同时执行插入的情况下,上面的取Field1的最大值得方法不可行。
oracle的话,先建立一个序列,再写一个触发器,可以达到象sql自动增加列的效果,详细你可以看看这方面的书。