如何用java中取到作为数据库主键的值?

如何用java中取到作为数据库主键的值?,第1张

可以写触发器trriger,在更新主表的主键前将从表的键值改掉再更新主表的键值。

举个例子。

CREATE OR REPLACE TRIGGER TRG_触发器名 ,创建触发器。BEFORE INSERT OR UPDATE ,意思是在插入或更新 *** 作之前。ON 主表名,为主表创建。

REFERENCING OLD AS OLDROW NEW AS NEWROW  ,定义数据行。FOR EACH ROW ,BEGIN。IF INSERTING  THEN,向主表插入时做的 *** 作。ELSE,更新主表时做的 *** 作。Update 从表的 *** 作写在这里就可以。END IFEND

Oracle的啊 给你个例子,你自己改下表还有insert语句

public int save(User user) throws SQLException {// 插入数据

int id = 0// 返回用户ID

String sql = "insert into regist_1 values(regist_1seq.nextval,?,?,?,?,?,?)"

String sql2 = "select regist_1seq.currval from dual"

//sql2就是获取序列自增的值,你把regist_1seq换成你自己的

Connection con = ConnectionUtils.openConnection()

PreparedStatement stmt = con.prepareStatement(sql)

stmt.setString(1, user.getUsername())

stmt.setString(2, user.getName())

stmt.setString(3, user.getPassword())

stmt.setInt(4, user.getAge())

stmt.setString(5, user.getSex())

stmt.setString(6, user.getTel())

stmt.executeUpdate()

stmt = con.prepareStatement(sql2)

ResultSet rs = stmt.executeQuery()

if (rs.next()) {

id = rs.getInt(1)

System.out.println("save id:" + id + "...")

}

ConnectionUtils.closeResult(rs)

ConnectionUtils.closeStatement(stmt)

ConnectionUtils.closeConnection(con)

return id

}

不懂可以追问.

你可以先用sql语句查询出数据库的结构,就可以知道那个字段是主键。如果你插入的数据不包含主键,那么主键就是由数据库生成的,比如是自增序列或uuid,这时候需要从数据库中读取出来,你可以用刚才插入的数据作为条件查询,同时选择只取一条记录,当然这种方式也不是很可靠,尤其是高并发下;如果插入数据包含主键,那么返回值就在你插入数据的对应位置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6919919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存