【问题标题】:How to Auto increment a column in mysql table through java如何通过java自动增加mysql表中的列
【发布时间】:2012-07-11 08:49:04
【问题描述】:

我有 2 列 1.column1 2.column2 的表(它是唯一的) 现在通过java编码我通过2种方法插入数据 在我要插入数据的第一种方法中,在这个 coumn1 字段中应该是自动增量(对于新用户)

String sql = "INSERT INTO table (column1, column2) values(?, ?)";
pstm = connection.prepareStatement(sql);

    pstm.setInt(1, auto_incrmentvalue need to set);
    pstm.setInt(2,column2);

在第二种方法中插入我想要的数据

String sql = "INSERT INTO table (column1, column2) values(?, ?)";
pstm = connection.prepareStatement(sql);

    pstm.setInt(1, column1);
    pstm.setInt(2,column2);

第一种方法如何设置自增值

注意:这里的 column1 不是主键

【问题讨论】:

  • 你使用 Spring JdbcTemplate 吗?
  • @QuickSilver - 没有。你没看粗体部分的内容吗?
  • 不使用 Spring JdbcTemplate only JDBC

标签: java mysql


【解决方案1】:
INSERT INTO table(column1) SELECT MAX(column1)+1 FROM table

这个对我有用

请看INSERT...SELECT

你的查询应该是这样的,

INSERT INTO table(column1, column2) SELECT MAX(column1)+1, 79  FROM table

更精致的答案:

INSERT INTO
     usertable(column1, column2) 
     SELECT CASE COUNT(column1) 
         WHEN 0 THEN 0 
         ELSE MAX(column1) END+1,
     79 FROM usertable

这可能是一个更简单的解决方案:

INSERT INTO usertable(column1, column2) 
SELECT IFNULL(MAX(column1)+1,1),79 FROM usertable

【讨论】:

  • 我尝试这样它会给出错误 mysql> 插入用户表(column1,column2)值((从表中选择 max(column1))+1、79); ERROR 1093 (HY000): You can't specify target table 'userstable' for update in FROM 子句
【解决方案2】:

让我们尝试一次(未测试)

INSERT INTO table(column1) SELECT count(column1)+1 FROM table

例如,

INSERT INTO table(column1, column2) SELECT count(column1)+1, 79  FROM table

【讨论】:

  • 它工作正常我还有一个疑问假设我们有 9 列当一列被删除然后它再次为 column1 存储 9?
【解决方案3】:

如果你想要column1的自动值,不要设置它,让它得到一个默认值

INSERT INTO table (column2) values(?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2012-05-28
    • 2023-01-27
    相关资源
    最近更新 更多