首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止查询的重复执行,如ALTER TABLE....?

问如何防止查询的重复执行,如ALTER TABLE....?
EN

Stack Overflow用户
提问于 2013-12-16 20:42:39
回答 1查看 38关注 0票数 0

我已经与每月10 of的新数据与MySQL数据库计费。计费有生产版和开发版。

程序员创建补丁,并在更新时逐个应用每个补丁。这不是最好的DB修补方式,但目前我们对此无能为力。

我们有像这样的查询

代码语言:javascript
复制
ALTER TABLE  `Customer` ADD FOREIGN KEY (  `contract_id` ) REFERENCES  `Document` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ;

我发现,每次使用此查询修补程序时,都会在表之间创建引用。当表中有100,000,000条记录时,速度很慢,而且是错误的。

我能做些什么来阻止这个查询的第二次执行吗?可以给出一些名称以供参考&

EN

回答 1

Stack Overflow用户

发布于 2013-12-16 20:46:44

您可以使用此样式:

代码语言:javascript
复制
IF NOT EXISTS (SELECT NULL FROM information_schema.TABLE_CONSTRAINTS WHERE
               CONSTRAINT_SCHEMA = DATABASE() AND
               CONSTRAINT_NAME   = 'contract_document' AND
               CONSTRAINT_TYPE   = 'FOREIGN KEY') THEN
    ALTER TABLE `Customer` ADD CONSTRAINT `contract_document`
                         FOREIGN KEY (`contract_id`)
                         REFERENCES `Document` (`id`);
END IF
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20611237

复制
相关文章

相似问题

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