0

選択は機能し、1 つの結果を返します。

SELECT * FROM `list` WHERE `email` = 'john@doe.com' AND `cid` = 1;

この更新は機能し、エラーも記録も影響を受けません!!!

UPDATE `list` 
  SET `message` = 'test', `status` = 0 
WHERE `email` = 'john@doe.com' AND `cid` = 1;

テーブル構造

CREATE TABLE `list` (
    `id` BIGINT(19) NOT NULL AUTO_INCREMENT,
    `email` VARCHAR(255) NULL DEFAULT NULL,
    `cid` INT(10) NOT NULL DEFAULT '0',
    `message` TEXT NULL,
    `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `status` TINYINT(1) NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`),
    INDEX `cid` (`cid`),
    INDEX `date` (`date`),
    INDEX `status` (`status`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
4

1 に答える 1

3

MySQL サーバーは、1 つの行が条件に一致しても、更新する必要がないため、影響を受けたレコードはないと報告します。これには、既にmessage= 'test' およびstatus= 0 が含まれています。

日付フィールドを常に更新する場合は、次のクエリを試してください。

UPDATE `list` 
  SET `message` = 'test', `status` = 0, `date`=NOW()
WHERE `email` = 'john@doe.com' AND `cid` = 1;
于 2012-09-11T19:49:19.797 に答える