【问题标题】:Update data when having UNIQUE Constraint具有唯一约束时更新数据
【发布时间】:2020-07-04 20:55:29
【问题描述】:

我有一个 HTML5 游戏的简单分数表,其中包含:名称、电子邮件和分数。电子邮件值应该是唯一值,但是当相同的用户再次玩游戏以提高他们的分数时,应该为该用户更新分数。现在它由于唯一值而返回错误。我应该如何创建一个可以更新数据的表?

到目前为止我创建的表:

CREATE TABLE `scores` (
     `id` INT NOT NULL AUTO_INCREMENT,
     `name` VARCHAR( 20 ) NOT NULL,
     `email` VARCHAR( 320 ) NOT NULL UNIQUE,
     `score` INT NOT NULL,
     PRIMARY KEY ( `id` )
     ) ENGINE = InnoDB;

【问题讨论】:

    标签: database unique


    【解决方案1】:

    您可以使用带有on duplicate key 子句的插入语句:

    INSERT INTO scores (name, email, score)
    VALUES ('some_name', 'some_email', 123) -- Values from your application
    ON DUPLICATE KEY UPDATE 
    score = CASE VALUES(score) > score THEN VALUES(score) ELSE score END
    

    【讨论】:

    • 感谢您的回答。我必须承认我在插入这个例子时遇到了麻烦。我是新手,我想我为我的学校项目选择了一项艰巨的任务......对于 PHP,我有这个代码可以将数据发送到数据库:jsfiddle.net/skxgrd6u
    【解决方案2】:

    这与您的创建表查询无关,而与您的插入查询有关。

    使用try catch方法更新唯一值

    try
    {
    // inserting the line
    }
    catch (exception)
    {
    // Drop the row with that unique value
    // inserting the same line which you have added in "try" section
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多