2012-09-11 73 views
0

選擇工作並返回1結果。MySQL更新不更新

SELECT * FROM `list` WHERE `email` = '[email protected]' AND `cid` = 1; 

此更新的工作原理,沒有錯誤,沒有記錄受到影響!

UPDATE `list` 
    SET `message` = 'test', `status` = 0 
WHERE `email` = '[email protected]' 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; 
+0

你可以發表表格定義嗎? 'SHOW CREATE TABLE list' – favoretti

+0

添加表結構 – transilvlad

+2

另外,你確定你實際上正在改變一些這些值嗎? MySQL將分別報告它匹配的行數,以及它改變了多少行。如果它們不同,那麼數據根本就不需要改變。 –

回答

2

沒有記錄受到影響MySQL服務器報告,因爲即使一排的標準相匹配,則不需要進行更新:它已經message =「測試

:「如果你想 總是更新日期字段 status = 0

嘗試此查詢3210

UPDATE `list` 
    SET `message` = 'test', `status` = 0, `date`=NOW() 
WHERE `email` = '[email protected]' AND `cid` = 1; 
+0

好的,好的答案是有道理的,免除服務器使用額外資源的需要。 GOT解決方案?我希望TIMSTAMP以任何方式更新日期字段。 – transilvlad

+0

如果你想更新日期字段,那麼它應該是你的更新查詢的一部分。 – Jocelyn

+0

如果我不想提供時間,我希望MySQL能做到這一點。 – transilvlad