我需要一个只有在主键存在时才可以删除主键的查询。ALTERTABLEtablenameDROPPRIMARYKEY;如果它不存在,这将返回错误,但我的要求是在不同的数据库中运行查询。 最佳答案 在MariaDB10.2.16中,我能够通过以下方式解决这个问题:ALTERTABLEtablenameDROPINDEXIFEXISTS`PRIMARY`;这应该适用于任何表,因为MySQL中的主键总是称为PRIMARY,如MySQL文档中所述:ThenameofaPRIMARYKEYisalwaysPRIMARY,whichthuscan
我知道在MySQL中,UNIQUE约束不会将NULL值视为相等。因此,如果我对ColumnX有唯一约束,那么两个单独的行对于ColumnX可以具有NULL值,这不会违反约束。我该如何解决这个问题?我不能只将该值设置为我可以标记的任意常量,因为在我的例子中,ColumnX实际上是另一个表的外键。我在这里有哪些选择?请注意,此表还有一个作为其主键的“id”列。由于我使用的是RubyonRails,因此将此id列作为主键很重要。注2:实际上,我的唯一键包含很多列,其中一些必须为空,因为它们是外键,只有其中一个不为空。我实际上想做的是以一种在数据库中保持引用完整性的方式“模拟”多态关系,但使用
我在我的MySQL数据库中使用约束。但是现在,当我试图删除一个与其他条目具有外键关系的条目时,这让我很头疼。我总是收到此错误:Cannotdeleteorupdateaparentrow:aforeignkeyconstraintfails我能否向delete语句传递任何参数或任何内容,以便它递归删除与我要删除的行具有外键关系的所有行? 最佳答案 更新:现在已将其制作成博客文章:https://stevettt.blogspot.co.uk/2018/02/how-to-automate-deletion-of-rows-in.ht
如何使用'Check'语句来验证mysql中的字段值?看看这个page,手册中没有讨论check关键字在MySqlWorkbench和Navicatformysql中,不存在任何设置约束或检查的选项。 最佳答案 MySQL不强制执行CHECK约束。它解析检查约束子句,但默默地忽略它。您必须使用触发器来验证数据。 关于mysql-如何使用'Check'语句来验证mysql中的字段值?,我们在StackOverflow上找到一个类似的问题: https://sta
对于相同的代码片段,SQLAlchemy在MacOX上创建外键约束,但是,它无法在DebianLinux上创建外键约束。环境与图书馆:python2.7SQLAlchemy0.7.8MySQL-python-1.2.3[这是连接器,我怀疑这里有问题]代码片段:classPRStatusCV(globalBase):__tablename__='pr_status_cv'pr_status_cv_id=Column(Integer,primary_key=True)name=Column(VARCHAR(100),nullable=False,unique=True)def__init_
我遇到了一些烦人的事情,希望你能给出一些启示。我正在通过PHPMySQL查询生成一个数组。我的WHILE语句如下:$model[constraints][d][]=array($row['Node']=>array("max"=>$row['dem'],"min"=>$row['dem']));问题是每个添加到$model[constraints][d]的新数组都包含在一个数组中。请参见下面的屏幕截图:我不希望挪威周围出现数组“0”。我希望能够按如下方式访问我的值:$model[constraints][s][Norway][max]现在,我可以访问该值的唯一方法是执行以下操作:$mo
我正在重构代码,从mysql扩展到pdo的。现有的db模式是这样的,100个脉冲表中的几乎所有列都具有NOTNULL约束。由于这个限制,我在插入和更新数据时经常遇到以下错误。SQLSTATE[23000]:违反完整性约束:1048列“some-column-name”不能为null义务:不可能更改数据库模式,即删除NOTNULL约束。在为每一列插入之前很难检查值是否为null。所以我正在寻找一个通用的解决方案,其中插入空字符串而不是NULL,它将针对所有PDO语句进行寻址。我正在使用thisPDO辅助类。 最佳答案 当您声明您的列时
我正在使用MySQL数据库服务器**(服务器版本:5.5.40-0ubuntu0.14.04.1-log-(Ubuntu))**。数据库中有一个名为'users'的表。在表'users'中有一列标题为'full_name'。下面是对它的约束Name:full_nameType:`varchar(255)`Collation:`latin1_swedish_ci`Attributes:Null:NoDefault:NoneExtra:我在这个专栏('full_name')中遇到的问题是一些来自PHP代码的empty值被插入到这个专栏中,尽管我已经添加了一个NOTNULL约束。我想避免在任
我正在使用MariaDB,现在想将外键添加到我的数据库表中。我在尝试使用setdefault作为我的删除约束时遇到问题;=。(pages表中的user_id默认为1)`altertable`pages`addconstraintpages_user_id_foreignforeignkey(`user_id`)references`users`(`id`)ondeletesetdefault`但是,当我这样做时,我遇到了错误SQLSTATE[HY000]:一般错误:1005无法创建表“project.#sql-add_38”(errno:150)当我查看最后一个外键错误时,我得到以下输
我的问题有点类似于thisone我想检查DELETE查询是否会因为违反约束而失败。我想在数据库级别执行此操作,因为我认为让它失败并捕获错误很丑陋。另一种选择是使用SELECT查询“手动”检查它以查看是否存在约束,但这相当乏味,恕我直言。是否有“本地”方式来执行此操作? 最佳答案 最简单直接的方法是执行DELETE,并捕获错误。如果您对其他表运行SELECT语句,您可能会了解行是否存在(暗示外键约束)。但是外键约束只是许多完整性约束中的一种。您还必须考虑某些完整性约束可能会通过触发器实现(出于好的原因、坏的原因或根本没有原因)。