Questions tagged «foreign-keys»

外键是关系(和SQL)数据库的数据完整性功能。外键是关系表中的一组属性,这些属性受引用完整性约束的约束。参照完整性约束要求一个表A中的外键属性的值必须与某些指定表B(有时​​可能与A的表)中的对应值匹配。

12
如何从我的MySQL表中删除约束?
我想从表中删除约束。我的查询是: ALTER TABLE `tbl_magazine_issue` DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users` 但是我得到一个错误: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以FK_tbl_magazine_issue_mst_users在第1行的'constraint ' 附近使用正确的语法

21
MySQL错误1452-无法添加或更新子行:外键约束失败
我有一个奇怪的问题。我正在尝试向一个引用另一个表的表添加外键,但是由于某种原因它失败了。以我对MySQL的有限了解,唯一可能令人怀疑的是,另一张表上有一个外键引用了我要引用的表。 我已经SHOW CREATE TABLE对两个表进行了查询,sourcecodes_tags是带有外键的表,sourcecodes还是被引用的表。 CREATE TABLE `sourcecodes` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL, `language_id` int(11) unsigned NOT NULL, `category_id` int(11) unsigned NOT NULL, `title` varchar(40) CHARACTER SET utf8 NOT NULL, `description` text CHARACTER SET utf8 NOT NULL, `views` int(11) unsigned NOT NULL, `downloads` int(11) …

7
带外键的表列可以为NULL吗?
我有一个表,其中有几个ID列指向其他表。 我希望只有在将数据放入其中时,外键才能强制完整性。如果我稍后进行更新以填充该列,则它还应该检查约束。 (这可能取决于数据库服务器,我使用的是MySQL和InnoDB表类型) 我相信这是一个合理的期望,但是如果我错了,请纠正我。

13
INSERT语句与FOREIGN KEY约束冲突-SQL Server
我收到以下错误。请你帮助我好吗? 消息547,级别16,状态0,第1行 INSERT语句与FOREIGN KEY约束“ FK_Sup_Item_Sup_Item_Cat”发生冲突。数据库“ dev_bo”的表“ dbo.Sup_Item_Cat”中发生了冲突。该语句已终止。 码: insert into sup_item (supplier_id, sup_item_id, name, sup_item_cat_id, status_code, last_modified_user_id, last_modified_timestamp, client_id) values (10162425, 10, 'jaiso', '123123', 'a', '12', '2010-12-12', '1062425') 最后一列client_id导致错误。我试图将已经存在的值dbo.Sup_Item_Cat放入对应于sup_item的列中。

8
在表上显示约束命令
我有尝试设置PK FK关系的表,但我想对此进行验证。如何显示PK / FK约束?我看到了此手册页,但未显示示例,我的Google搜索也没有结果。我的数据库是credentialing1,我的约束表是practices和cred_insurances。

30
迁移:无法添加外键约束
我试图在Laravel中创建外键,但是当我使用我的表进行迁移artisan时,抛出以下错误: [Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL : alter table `priorities` add constraint priorities_user_id_foreign foreign key (`user_id`) references `users` (`id`)) 我的迁移代码是这样的: 优先级迁移文件 public function up() { // Schema::create('priorities', function($table) { $table->increments('id', true); $table->integer('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->string('priority_name'); $table->smallInteger('rank'); $table->text('class'); $table->timestamps('timecreated'); }); } /** * Reverse the migrations. …

9
如何在Oracle SQL Developer中找到哪些表引用了给定的表?
在Oracle SQL Developer中,如果我正在查看表上的信息,则可以查看约束,这些约束可以让我看到外键(以及该表引用了哪些表),还可以查看依赖项以了解哪些内容。包等参考表。但是我不确定如何找到哪些表引用了该表。 例如,说我在看emp桌子。还有另一个表emp_dept可以捕获哪个员工在哪个部门工作,该emp表通过表emp_id的主键引用该emp表。有没有办法(通过程序中的某些UI元素,而不是通过SQL)找到该emp_dept表引用了该emp表,而无需我知道该emp_dept表是否存在?

3
外键约束:何时使用ON UPDATE和ON DELETE
我正在使用MySQL Workbench设计数据库架构,这很酷,因为您可以执行图并将其转换为:P 无论如何,由于它具有外键支持,所以我决定使用InnoDB。我注意到的一件事是,它允许您为外键设置On Update和Delete选项。有人可以在一个简单的示例中解释“限制”,“级联”和设置null的位置吗? 例如,假设我有一个user包含的表userID。说我有一个消息表message是一个多到许多有2个外键(其中引用同一个主键,userID在该user表)。在这种情况下,设置“更新时”和“删除时”选项是否有用?如果是这样,我该选择哪一个?如果这不是一个很好的例子,请您举一个很好的例子来说明这些例子如何有用? 谢谢

11
MySQL删除一些外键
我有一个表,该表的主键在其他几个表中使用,并且对其他表有几个外键。 CREATE TABLE location ( locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ... ) ENGINE = InnoDB; CREATE TABLE assignment ( assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, locationID INT NOT NULL, FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID) ... ) ENGINE = InnoDB; CREATE TABLE assignmentStuff ( ... assignmentID …

12
IEntityChangeTracker的多个实例不能引用实体对象。在实体框架4.1中向实体添加相关对象时
我正在尝试保存“员工”详细信息,其中包含“城市”的引用。但是每次尝试保存我的联系人时,都会得到验证“ ADO.Net Entity Framework一个实体对象不能被IEntityChangeTracker的多个实例引用”的异常。 我已经阅读了很多文章,但仍然不知道该怎么做...我的“保存”按钮的点击代码如下 protected void Button1_Click(object sender, EventArgs e) { EmployeeService es = new EmployeeService(); CityService cs = new CityService(); DateTime dt = new DateTime(2008, 12, 12); Payroll.Entities.Employee e1 = new Payroll.Entities.Employee(); Payroll.Entities.City city1 = cs.SelectCity(Convert.ToInt64(cmbCity.SelectedItem.Value)); e1.Name = "Archana"; e1.Title = "aaaa"; e1.BirthDate = dt; e1.Gender = "F"; …


3
MySQL外键约束,级联删除
我想使用外键来保持完整性并避免使用孤立键(我已经使用过innoDB)。 如何创建在CASCADE上删除的SQL语句? 如果我删除类别,那么如何确保它不会删除也与其他类别相关的产品。 数据透视表“ categories_products”在其他两个表之间创建多对多关系。 categories - id (INT) - name (VARCHAR 255) products - id - name - price categories_products - categories_id - products_id


10
外键命名方案
我只是第一次开始使用外键,我想知道是否有用于它们的标准命名方案? 给定这些表: task (id, userid, title) note (id, taskid, userid, note); user (id, name) 在“任务具有注释”的情况下,“任务”由用户拥有,而“用户”编写注释。 在这种情况下如何命名三个外键?或者,这甚至有关系吗? 更新:此问题是关于外键名称,而不是字段名称!

9
外键是否可以提高查询性能?
假设我有2个表格,产品和产品类别。两个表在CategoryId上都有关系。这就是查询。 SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS Category FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE c.CategoryId = 1; 当我创建执行计划时,表ProductCategories会执行群集索引查找,这与预期的一样。但是对于表Products,它执行集群索引扫描,这使我感到怀疑。为什么FK不能帮助提高查询性能? 因此,我必须在Products.CategoryId上创建索引。当我再次创建执行计划时,两个表都执行索引查找。并且估计的子树成本大大降低了。 我的问题是: 除了FK有助于关系约束之外,它还有其他用途吗?它会提高查询性能吗? 是否应该在所有表的所有FK列(如Products.CategoryId)上创建索引?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.