【发布时间】:2016-07-28 19:47:31
【问题描述】:
我有一张这样的桌子,
创建表 ruff(id varchar(25) 主键,name varchar(30));
我需要从 jdbc 帮助中自动插入 id 的主键吗?
【问题讨论】:
我有一张这样的桌子,
创建表 ruff(id varchar(25) 主键,name varchar(30));
我需要从 jdbc 帮助中自动插入 id 的主键吗?
【问题讨论】:
您可以在 Oracle 数据库中定义序列,也可以指定序列的自定义生成方法。并且当您将值插入表中时,您可以使用先前生成的序列来插入主键,而不是提供来自用户的值。
【讨论】:
JDBC 不会自动生成 ID。通常是数据库执行此操作,但如果不使用触发器,即使是数据库也不会为VARCHAR(25) 生成一个。
要检索数据库生成的密钥,您可以使用con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);,尽管这可能不适用于触发器生成的值。
【讨论】:
Statement.RETURN_GENERATED_KEYS,您只需要准备好处理它不返回生成的id,而是ROWID,然后可以使用它来查询获取实际生成的 id 的行。
在 Oracle 中定义一个序列,并在值子句下的插入语句中用 sequence.nextval 填充您的 ID 例如- 插入 ruff(id,name) values(your_sequence.nextval,'name')
【讨论】: