=>
CREATE
TABLE
test_create_tab2
(
db2
(cont.)
=>
id
INT
NOT
NULL
PRIMARY
KEY
generated
always
as
identity,
db2
(cont.)
=>
val
VARCHAR(10)
db2
(cont.)
=>
)
DB20000I
SQL
命令成功完成。
db2
=>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id')
DB20000I
SQL
命令成功完成。
这里和
SQL
Server
一样,大家都不能手动指定那个
自增id
的数值
db2
=>
INSERT
INTO
test_create_tab2(id,
val)
VALUES
(1,
'id
no
use')
DB21034E
该命令被当作
SQL
语句来处理,因为它是无效的“命令行处理器”命令。在
SQL
处理期间,它返回:
SQL0798N
不能为定义为
GENERATED
ALWAYS
的列
"ID"
指定值。
SQLSTATE=428C9
这里和
SQL
Server
不一样,SQL
Server
会自动排除掉那个自动递增的列
db2
=>
INSERT
INTO
test_create_tab2
VALUES
('Is
Auto
?')
DB21034E
该命令被当作
SQL
语句来处理,因为它是无效的“命令行处理器”命令。在
SQL
处理期间,它返回:
SQL0117N
赋值数目与指定的或隐含的列数或变量数不一样。
SQLSTATE=42802
关于
初始数值的设定。
db2
=>
drop
TABLE
test_create_tab2
DB20000I
SQL
命令成功完成。
db2
=>
CREATE
TABLE
test_create_tab2
(
db2
(cont.)
=>
id
INT
NOT
NULL
PRIMARY
KEY
generated
always
as
identity
db2
(cont.)
=>
(Start
With
100
db2
(cont.)
=>
Increment
by
1
db2
(cont.)
=>
minvalue
100
db2
(cont.)
=>
maxvalue
999999999
db2
(cont.)
=>
no
cycle
cache
5
no
order),
db2
(cont.)
=>
val
VARCHAR(10)
db2
(cont.)
=>
)
DB20000I
SQL
命令成功完成。
db2
=>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id')
DB20000I
SQL
命令成功完成。
db2
=>
select
*
from
test_create_tab2
ID
VAL
-----------
----------
100
NO
id
1
条记录已选择。
db2
=>
select
identity_val_local()
from
SYSIBM.SYSDUMMY1
1
---------------------------------
100.
1
条记录已选择。
你的这个需求好象直接再把记录插入到表2就可以,但我估计你不是这个意思。比较笨的办法,可以定义一个数组用于记录表1的ID值,或者用个临时表来记录表一新增加的记录ID列表。
insert后,query的指针应该还是停留在最新增加的记录上的,因此是可以取得到ID值的。
代码如下,假设表一只有二个字段,一个是ID(自动增量),一个是字段A(字符型),
var
sql:string
id1:integer
begin
sql:='insert into 表一 ('''+字段A+''') values ('''+ '内容'+''')'
query1.close
query1.sql.clear
query1.sql.add(sql)
query1.Execsql
id1:=query1.fieldbyname('id').asinteger
//接下来可以把ID1的值写入临时表或者数组了,如果是需要不同的机器取得ID值,可以用临时表,不过速度会慢些,如果只是本机取得,就用数组好了。
//后面的代码略
...
...
end
上述代码我没有条件试,应该可以,另外还可以用append的方法追加记录,这样就一定可以用上面的方法取到ID值了。
var
id1:integer
begin
query1.append
query1.fieldbyname('字段A').asstring = '内容'
query1.post
id1:=query1.fieldbyname('ID').asinteger
//这种方法一定可以取得到ID值。
//后面你自行对取得的ID进行存储就行了,临时表或者数组都可以。代码略
end
在ACCESS数据库中,不能用SCOPE_IDENTITY或者 LAST_INSERT_ID(),只能用于SQL数据库中。还是分两条语句吧。先取最后一ID号再加1就是要返回的ID,用另一语句存入该ID就可以了。
sql="insert into Productinfo([ProductName],[CateID]) values('"&ProductName&"',"&CateID&")"
set rs_conn=conn.execute("select top 1 id from Productinfo order by id desc")
sql_conn="insert into ProductConn([ProID],[CateID]) values("&rs_conn("id")+1&"," &CateID&")"
conn.execute(sql)
conn.execute(sql_conn)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)