更新大量数据,日期(+1小时),唯一性约束

时间:2019-06-13 14:37:18

标签: mysql date

我尝试在特定日期之后为每个值添加1小时...

我有这样的桌子:

Colonne Type
id  int(11)
date    datetime    
value   double  
kind    varchar(190)    
data_id int(11) NULL

我对'date'有唯一的约束。 '种类'。 'data_id'

我尝试:

update data set `date` = ADDTIME(`date`, '01:00:00') WHERE `date` > '2019-03-31 02:00:00';

但是我得到了错误

  

键'UNIQ_DATE_KIND_DATA_ID的条目'2019-03-31 04:05:00-ManualDataValue-1'重复

我了解该错误,该值存在,但我需要“移动”所有数据... 因此,如果在一个程序段中执行请求,并在最后检查唯一约束,那么从技术上讲就没有错误...

如何执行此操作? (PS:SELECT * FROM data WHERE date>'2019-03-31 02:00:00'返回1,198,778条目,所以我无法手动执行此操作:/)

1 个答案:

答案 0 :(得分:1)

尝试:

function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/admin.directory.user https://www.googleapis.com/auth/admin.directory.user.readonly"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    gapi.client.setApiKey("YOUR_API_KEY");
    return gapi.client.load("https://content.googleapis.com/discovery/v1/apis/admin/directory_v1/rest")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.directory.users.get({
      "userKey": "<user email address>"
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: "YOUR_CLIENT_ID"});
  });`

有关更多说明,请参见此SO