Tag: 外键关系

何时使用“ON UPDATE CASCADE”

我经常使用“ON DELETE CASCADE”,但是我从不使用“ON UPDATE CASCADE”,因为我不太确定它在什么情况下会有用。 为了讨论起见,请看一些代码。 CREATE TABLE parent ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ); CREATE TABLE child ( id INT NOT NULL AUTO_INCREMENT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ); 对于“ON DELETE CASCADE”,如果删除了具有id的父项,则具有parent_id = parent.id子项中的logging将被自动删除。 这应该没问题。 这意味着“ON UPDATE CASCADE”会在更新父代的id时做同样的事情? 如果(1)为真,则意味着如果parent.id不可更新(或将永远不会更新),则不需要使用“ON UPDATE CASCADE”,就像它是AUTO_INCREMENT或始终设置为TIMESTAMP 。 […]

为什么你不能有一个多态关联的外键?

为什么你不能有一个多态关联的外键,比如下面的Rails模型? class Comment < ActiveRecord::Base belongs_to :commentable, :polymorphic => true end class Article < ActiveRecord::Base has_many :comments, :as => :commentable end class Photo < ActiveRecord::Base has_many :comments, :as => :commentable #… end class Event < ActiveRecord::Base has_many :comments, :as => :commentable end

实体框架中一个关联的主体端在1:1关系中意味着什么

public class Foo { public string FooId{get;set;} public Boo Boo{get;set;} } public class Boo { public string BooId{get;set;} public Foo Foo{get;set;} } 当我遇到错误时,我试图在Entity Framework中做到这一点: 无法确定类型“ConsoleApplication5.Boo”和“ConsoleApplication5.Foo”之间关联的主要结尾。 此关联的主要目的必须使用关系流畅API或数据注释来显式配置。 我已经在StackOverflow上看到了有关此错误的解决方案的问题,但我想了解术语“主体端”的含义。