【问题标题】:How to use an generated identity in an SQL statement (NetBeans JavaDB)如何在 SQL 语句中使用生成的身份 (NetBeans JavaDB)
【发布时间】:2017-02-07 07:58:29
【问题描述】:

我的桌子是这样设置的:

CREATE TABLE "CAMPAIGNS"
(  "campaignId" INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
   "campaignName" VARCHAR(200),     
   "campaignLocation" VARCHAR(200),
   "campaignManager" VARCHAR(200)

);

我的 INSERT 语句应该是什么样子,这样我才能确保campaignId 列自动递增,然后我选择将进入表的其余值?

【问题讨论】:

  • 只是为了我的理解和清楚标签,但不是来自 sql server 的 IDENTITY 语法,而在 mysql 中这将是 AUTO_INCREMENT?

标签: java mysql sql netbeans


【解决方案1】:
INSERT INTO CAMPAIGNS (campaignName, CampaignLocation, CampaignManager)
VALUES ('Test','Sofia','Emil')

【讨论】:

  • 是的!谢谢!!
【解决方案2】:

有时这因数据库而异。但是将其省略,或者使用 null 应该可以正常工作。

insert into CAMPAIGNS(campaignId, campaignName, campaignLocation, campaignManager)
values (null, 'My Campaign', 'Australia','Bob');

【讨论】:

    【解决方案3】:
    PreparedStatement preparedStatement = 
        connect.prepareStatement("INSERT into CAMPAIGNS (campaignName, campaignLocation,campaignManager) VALUES (?,?,?)");
    
    preparedStatement.setString(1, "campaignName");
    preparedStatement.setString(2, "campaignLocation");
    preparedStatement.setString(3, "campaignManager");
    

    【讨论】:

      【解决方案4】:

      插入时不要提及

      insert into CAMPAIGNS ( campaignName, campaignLocation, campaignManager) 
      values ( 'campaignName_value', 'campaignLocation_value', 'campaignManager_value')
      

      mysql 完成剩下的工作

      PS 不要无用的双引号

      【讨论】:

        【解决方案5】:

        只需确保 campaignId INT Auto_Increment 然后您不需要像这样在查询中输入 campaignId

        String query = "INSERT INTO CAMPAIGNS (campaignName, campaignLocation, campaignManager) 
                        VALUES (?, ?, ?)";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-08
          • 1970-01-01
          • 2017-08-06
          • 2023-03-15
          • 1970-01-01
          相关资源
          最近更新 更多