首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的update语句行为

问奇怪的update语句行为
EN

Stack Overflow用户
提问于 2016-11-23 19:52:22
回答 2查看 30关注 0票数 0

执行以下查询

代码语言:javascript
复制
UPDATE tbl_outcome SET  `type` = 'do', `statement` = 'NAREs, private sector organizations and NGOs develop innovation platforms, disseminate  market information to processors and develop their marketing skills', 
`actionsite_id` = 440, `code` = 'G&T-I' WHERE (outcome_id = '546');

将导致此错误

代码语言:javascript
复制
SQLSTATE[23000]: Integrity constraint violation:
 1062 Duplicate entry 'NAREs, private sector organizations and NGOs develop innovation ' for key 'statement'

注意到有另一行共享相同的语句值,但为什么它拒绝复制

代码语言:javascript
复制
CREATE TABLE `tbl_outcome` (
      `outcome_id` int(11) NOT NULL AUTO_INCREMENT,
      `type` varchar(2) NOT NULL,
      `statement` varchar(255) DEFAULT NULL,
      `actionsite_id` int(11) NOT NULL,
      `code` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`outcome_id`),
      UNIQUE KEY `statement` (`statement`,`actionsite_id`),
      KEY `actionsite_id` (`actionsite_id`),
      CONSTRAINT `tbl_outcome_ibfk_1` FOREIGN KEY (`actionsite_id`) REFERENCES `tbl_actionsite` (`actionsite_id`) ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=551 DEFAULT CHARSET=utf8;

mysql> mysql> SELECT statement FROM crpcoreix.tbl_outcome limit 5;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| statement                                                                                                                                                                                                                            |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|   Female and male farmers/shakeholders use/adopt/implement methods/tools/approaches/technologies/NRMpractices/Varieties/framework/concepts                                                                                            |
|   Female and male farmers/stakeholders (inc.youth) awareness, skills and knowledge increased                                                                                                                                          |
|   Female and male farmers/stakeholders (inc.youth) awareness, skills and knowledge increased                                                                                                                                          |
|   Interventions better targeted/prioritized by stakeholders                                                                                                                                                                           |
|  At least (3-15?) potato candidate varieties (short season, heat tolerant, and pest/disease resistant) compatible  with cereal crops: identified and recommended for release in at least  three countries (China, Bangladesh, India) |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
EN

回答 2

Stack Overflow用户

发布于 2016-11-23 19:58:33

因为在Statement列上有一个名为的唯一键约束:

代码语言:javascript
复制
UNIQUE KEY `statement` (`statement`,`actionsite_id`),

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2016-11-23 19:59:37

尝尝这个

代码语言:javascript
复制
 SHOW INDEX FROM tbl_outcome

这将为您提供唯一密钥的index_name

然后运行以下查询

代码语言:javascript
复制
ALTER TABLE tbl_outcome DROP INDEX index_name

这将删除唯一键约束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40763804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档