草庐IT

mysql - 为什么在删除或更新时不使用外键

我有一个感兴趣的问题:我在mysql中有2张table使用InnoDb。表tbl_a有一个主键,名为a_id;表tbl_b有一个主b_id和一个在tbl_a.a_id上带有“ONDELETENOACTION”的外键。+-------------+---------------+---------------+|TableName|PrimaryKey|ForeignKey|+-------------+---------------+---------------+|tbl_a|a_id|||tbl_b|b_id|a_id|+-------------+---------------+

mysql - 是否可以将一列引用为多个外键?

我的表很少,我想将PDF表中的一列引用到其他多个表。例如,如果PDF表select输出如下所示:ITEM_TYPEITEM_IDQUANTITY12332121它告诉我:PDF上面有3个车轮产品和1个汽车模板标题;我写了SQL代码,但是不能正常工作:CREATETABLE`pdf_created`(`id`INT(10)UNSIGNEDNOTNULLUNIQUEAUTO_INCREMENT,`pdf_id`INT(10)NOTNULL,`item_type`INT(3)UNSIGNEDNOTNULL,`item_id`INT(10)UNSIGNEDNOTNULL,`quantity`I

mysql - 是否可以将一列引用为多个外键?

我的表很少,我想将PDF表中的一列引用到其他多个表。例如,如果PDF表select输出如下所示:ITEM_TYPEITEM_IDQUANTITY12332121它告诉我:PDF上面有3个车轮产品和1个汽车模板标题;我写了SQL代码,但是不能正常工作:CREATETABLE`pdf_created`(`id`INT(10)UNSIGNEDNOTNULLUNIQUEAUTO_INCREMENT,`pdf_id`INT(10)NOTNULL,`item_type`INT(3)UNSIGNEDNOTNULL,`item_id`INT(10)UNSIGNEDNOTNULL,`quantity`I

mysql - 仅当存在外键时才删除它

我在MySQL数据库中。我正在这样做,但它不起作用。ALTERTABLE`object`DROPFOREIGNKEYIFEXISTS`object_ibfk_1`;我试图把这个IFEXISTS放在任何我能做的地方。如何在删除之前检查外键是否存在? 最佳答案 如果您想删除外键(如果存在)并且不想使用过程,您可以这样做(对于MySQL):set@var=if((SELECTtrueFROMinformation_schema.TABLE_CONSTRAINTSWHERECONSTRAINT_SCHEMA=DATABASE()ANDTAB

mysql - 仅当存在外键时才删除它

我在MySQL数据库中。我正在这样做,但它不起作用。ALTERTABLE`object`DROPFOREIGNKEYIFEXISTS`object_ibfk_1`;我试图把这个IFEXISTS放在任何我能做的地方。如何在删除之前检查外键是否存在? 最佳答案 如果您想删除外键(如果存在)并且不想使用过程,您可以这样做(对于MySQL):set@var=if((SELECTtrueFROMinformation_schema.TABLE_CONSTRAINTSWHERECONSTRAINT_SCHEMA=DATABASE()ANDTAB

mysql - Laravel 4迁移问题中的外键

我刚刚创建了一个新的Laravel4项目,发现架构构建器的外键方面发生了奇怪的事情。如果我在任何迁移中使用->foreign()方法,我会抛出MySQL错误150和一般错误1005。根据laravel.com/docs上的文档,底部的两个场景应该工作?有人知道他们为什么不这样做吗?以下确实有效:Schema::create('areas',function($table){$table->engine='InnoDB';$table->increments('id');$table->integer('region_id')->references('id')->on('regions

mysql - Laravel 4迁移问题中的外键

我刚刚创建了一个新的Laravel4项目,发现架构构建器的外键方面发生了奇怪的事情。如果我在任何迁移中使用->foreign()方法,我会抛出MySQL错误150和一般错误1005。根据laravel.com/docs上的文档,底部的两个场景应该工作?有人知道他们为什么不这样做吗?以下确实有效:Schema::create('areas',function($table){$table->engine='InnoDB';$table->increments('id');$table->integer('region_id')->references('id')->on('regions

mysql - 删除 MYSQL 数据库中的所有外键

外键导致我在修改数据库结构以满足新要求时遇到太多问题-我想修改主键,但是当外键引用有问题的表时我似乎不能(我认为是因为MySQL删除了表并且重新创建)。因此,当我在数据库上工作时,我想简单地删除所有外键并稍后重新创建它们。有没有一种巧妙的方法? 最佳答案 运行SELECTconcat('ALTERTABLE',TABLE_NAME,'DROPFOREIGNKEY',CONSTRAINT_NAME,';')FROMinformation_schema.key_column_usageWHERECONSTRAINT_SCHEMA='db

mysql - 删除 MYSQL 数据库中的所有外键

外键导致我在修改数据库结构以满足新要求时遇到太多问题-我想修改主键,但是当外键引用有问题的表时我似乎不能(我认为是因为MySQL删除了表并且重新创建)。因此,当我在数据库上工作时,我想简单地删除所有外键并稍后重新创建它们。有没有一种巧妙的方法? 最佳答案 运行SELECTconcat('ALTERTABLE',TABLE_NAME,'DROPFOREIGNKEY',CONSTRAINT_NAME,';')FROMinformation_schema.key_column_usageWHERECONSTRAINT_SCHEMA='db

MySQL 的 INSERT IGNORE INTO & 外键

为什么在MySQL中,INSERTIGNOREINTO不会将外键约束错误变为警告?我正在尝试将一些记录插入到一​​个表中,我希望MySQL会忽略那些导致错误的记录,任何错误,然后插入其余的记录。有人有什么建议吗?SETFOREIGN_KEY_CHECKS=0;不是我的答案。因为我希望根本不插入违反约束的行。谢谢 最佳答案 [新答案]感谢@NeverEndingQueue提出这个问题。似乎MySQL终于解决了这个问题。我不确定这个问题最初是在哪个版本中修复的,但现在我使用以下版本进行了测试,问题不再存在:mysql>SHOWVARIA