在我的代码中,我通过 foreach 循环构建了一个 CASE WHEN 语句,以更新一些数据。
问题是我可能会得到一百行甚至更多的语句,我想知道一次使用如此大的更新请求是否安全。我应该把我的请求分成小块吗?
基本上,该表的结构如下:
CREATE TABLE 'table_example' (
'id' INT UNSIGNED NOT NULL ,
'attr_1' INT UNSIGNED NOT NULL ,
'attr_2' INT UNSIGNED NOT NULL ,
'attr_3' DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
'attr_4' DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
'attr_5' TINYINT UNSIGNED NOT NULL ,
'attr_6' TINYINT UNSIGNED NOT NULL ,
'attr_7' TINYINT UNSIGNED NOT NULL ,
'attr_8' SMALLINT UNSIGNED NOT NULL ,
'attr_9' VARCHAR(50) NOT NULL ,
'attr_10' SMALLINT UNSIGNED NOT NULL ,
'attr_11' TINYINT(1) UNSIGNED NOT NULL ,
'attr_12' TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
INDEX 'idx_id' ('id' ASC) )
ENGINE = MyISAM DEFAULT CHARSET=utf8;`
构建后,CASE WHEN 语句可能如下所示:
CASE attr_1
WHEN id = 1 THEN 5
WHEN id = 2 THEN 8
... // could be hundreds more lines here
ELSE attr_1
END,
CASE attr_2
WHEN id = 1 THEN 96
WHEN id = 2 THEN 45
... // could be hundreds more lines here
ELSE attr_2
END,
... // and so on for each attribute`