草庐IT

mysql - 如何在MySQL中创建也是主键的外键?

这应该是一个相当简单的问题,但我找不到简单的答案。你如何创建一个外键同时也是MySQL中的主键?这是我目前的尝试:CREATETABLESale(sale_idCHAR(40),PRIMARYKEY(sale_id),discountDOUBLE,typeVARCHAR(255),priceDOUBLE,);CREATETABLENormal_Sale(sale_idCHAR(40),PRIMARYKEY(sale_id););CREATETABLESpecial_Sale(sale_idCHAR(40),PRIMARYKEY(sale_id););我在这里错过了什么?提前致谢。

mysql - 如何使用不级联删除其子项的外键创建 Django 模型?

我的一个具有ForeignKey的模型实际上是其他表上的MySQLView。我遇到的问题是,当我从这些表中删除数据时,Django,如"deletingobjects"documentation中所述...WhenDjangodeletesanobject,itemulatesthebehavioroftheSQLconstraintONDELETECASCADE--inotherwords,anyobjectswhichhadforeignkeyspointingattheobjecttobedeletedwillbedeletedalongwithit....尝试从我的View中删

mysql - 无法删除外键

我想在我的表中删除外键,但出现此错误消息mysql>altertablecustomersdropforeignkeycustomerid;ERROR1025(HY000):Erroronrenameof'.\products\customers'to'.\products\#sql2-7ec-a3'(errno:152)mysql> 最佳答案 所描述的解决方案herebyChrisWhite为我工作。根本问题是MySQL同时创建了一个索引和一个外键。两者都必须删除(外键首先与克里斯所说的相反)。显示创建表table_name;SH

php - 在 Laravel 中迁移外键与 Eloquent 关系

在Laravel5.1中,我可以看到表列关系可以通过两种方式设置:1)在迁移表中定义外键。2)在模型中定义Eloquent关系。我已阅读文档,但我仍然对以下内容感到困惑:我需要两个都用还是只需要一个?两者同时使用有错吗?还是成功了冗余或引起冲突?使用Eloquent关系而不提及迁移列中的外键?有什么区别?这些是我现在拥有的代码。我仍然不清楚是否需要删除我在迁移文件中设置的外键。迁移:publicfunctionup(){Schema::create('apps',function(Blueprint$table){$table->increments('id');$table->str

mysql - 如何在mysql中重命名外键?

我们刚刚在一个大表上完成了长时间运行的迁移,并最终在我们的conversation_tags表上遇到了以下约束:CONSTRAINT`conversation_tags_ibfk_1`FOREIGNKEY(`tag_id`)REFERENCES`tags`(`id`)不幸的是,某处出现了错误,因为我们想要的是:CONSTRAINT`fk_conversation_tags_tags`FOREIGNKEY(`tag_id`)REFERENCES`tags`(`id`)删除和重新添加约束意味着另外两个长查询。有没有办法在单个查询中重命名约束? 最佳答案

mysql - 如何添加外键(MySQL)

我对SQL非常陌生,我正在尝试执行一个简单的ALTERTABLE来创建一个新列并将其用作外键来引用我数据库中的另一个简单表。我已将两个表都更改为InnoDB但是,在执行ALTERTABLE代码时,我收到以下错误:Error1452Cannotaddorupdateachildrow:aforeignkeyconstraintfails(`toys`.,CONSTRAINT`#sql-6d4_6_ibfk_1`FOREIGNKEY(`toy_id`)REFERENCES`toys`(`toy_id`))下面是两张表的DESC:表1:FIELDTYPENULLKEYEXTRAtoy_idi

mysql - 如何将空值传递给外键字段?

我有2张table:大学:university_id(p.k)|university_name和用户:uid|name|university_id(f.k)如何在用户表中保留university_idNULL?我只写了1个查询,我的查询是:INSERTINTOuser(name,university_id)VALUES($name,$university_id);这里$university_id从前端可以为空。university表将由我默认设置。在前端,学生将选择大学名称,根据university_id将传递给user表,但如果学生没有选择任何大学名称,那么应该将空值传递给unive

mysql - 重命名 InnoDB 表而不更新对其的外键引用?

我正在尝试用新表替换InnoDB表,并且我希望所有指向旧表的外键引用都指向新表。所以我尝试了这个:SETforeign_key_checks=0;ALTERTABLEfooRENAMEfoo_old;ALTERTABLEfoo_newRENAMEfoo;不幸的是,即使禁用了foreign_key_checks,所有指向foo的引用都会更改为指向foo_old。现在我正在寻找任何一个一种无需重建整个表即可更改外键引用的方法,或者一种在不更新外键引用的情况下重命名表的方法。我尝试删除外键并重新创建它们,但由于表很大,因此需要几个小时。替换表的全部目的是在有限的停机时间内进行模式更改。

mysql - 错误代码 : 1215. 无法添加外键约束(外键)

CREATEDATABASEmy_db;CREATETABLEclass(classIDintNOTNULLAUTO_INCREMENT,nameClassvarchar(255),classLeadervarchar(255),FOREIGNKEY(classLeader)REFERENCESstudent(studentID),PRIMARYKEY(classID));CREATETABLEstudent(studentIDintNOTNULLAUTO_INCREMENT,lastNamevarchar(255),firstNamevarchar(255),classIDint,F

mysql - 如果可以使用 WHERE,为什么还需要使用外键?

一个关于MySQL中外键的初学者问题。在w3school它说,AFOREIGNKEYinonetablepointstoaPRIMARYKEYinanothertable.还有WHERE,WHEREid=page_id那么如果我可以使用WHERE来链接表,那么拥有外键的主要目的是什么? 最佳答案 查询并不严格需要它,这是真的。它的存在有几个原因:作为对表的约束,以阻止您插入不指向任何内容的内容;作为优化器的线索;和由于历史原因,哪里更需要。(1)可能是三者中最重要的一个。这称为referentialintegrity.这意味着如果外