标签: foreign-key-relationship

何时使用"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
);
Run Code Online (Sandbox Code Playgroud)

对于"ON DELETE CASCADE",如果id删除了具有a的父级,parent_id = parent.id则将自动删除子级中的记录.这应该没问题.

  1. 这意味着当id更新父级时,"ON UPDATE CASCADE"会做同样的事情吗?

  2. 如果(1)为真,则意味着如果parent.id不可更新(或永远不会更新),则不需要使用"ON UPDATE CASCADE",就像它是AUTO_INCREMENT或者总是设置为TIMESTAMP.是对的吗?

  3. 如果(2)不成立,在其他什么情况下我们应该使用"ON UPDATE CASCADE"?

  4. 如果我(由于某种原因)更新了child.parent_id不存在的内容,它会被自动删除吗?

好吧,我知道,上面的一些问题可以通过程序测试来理解,但我也想知道这是否依赖于数据库供应商.

请说清楚.

sql foreign-keys foreign-key-relationship

407
推荐指数
6
解决办法
30万
查看次数

什么是在Django中使用的`related_name`?

什么是related_name对on ManyToManyFieldForeignKey字段有用的参数?例如,给出以下代码,有什么影响related_name='maps'

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='maps',
                                     verbose_name=_('members'))
Run Code Online (Sandbox Code Playgroud)

python django many-to-many foreign-key-relationship

339
推荐指数
5
解决办法
17万
查看次数

关联的主要结尾在实体框架中以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;}
}
Run Code Online (Sandbox Code Playgroud)

当我收到错误时,我试图在Entity Framework中执行此操作:

无法确定类型"ConsoleApplication5.Boo"和"ConsoleApplication5.Foo"之间关联的主要结束.必须使用关系流畅API或数据注释显式配置此关联的主要结尾.

我已经在StackOverflow上看到了有关此错误的解决方案的问题,但我想了解术语"主要结束"的含义.

c# database-design entity-framework foreign-key-relationship

266
推荐指数
3
解决办法
12万
查看次数

postgresql外键语法

我将在下面的posgresql代码中看到2个表.第一个表学生有2列,一个用于student_name,另一个student_id是主键.在我的第二个名为tests的表中,它有4列,一个用于subject_id,一个用于subject_name,然后一个用于在一个主题中具有最高分数的学生,即最高学生.我试图让highStudent_id在我的学生表中引用student_id.这是我下面的代码,我不确定语法是否正确:

CREATE TABLE students ( student_id SERIAL PRIMARY KEY,
                 player_name TEXT);

CREATE TABLE tests ( subject_id SERIAL,
                   subject_name,
                   highestStudent_id SERIAL REFERENCES students);
Run Code Online (Sandbox Code Playgroud)

语法highestStudent_id SERIAL REFERENCES students是否正确?因为我见过另一个喜欢的人highestStudent_id REFERENCES students(student_id))

请问在postgresql中创建外键的正确方法是什么?

sql postgresql foreign-keys foreign-key-relationship relational-database

111
推荐指数
2
解决办法
7万
查看次数

SQL将外键添加到现有列

如果我在SQL Server 2008中使用以下SQL命令来更新具有外键约束的表:

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
Run Code Online (Sandbox Code Playgroud)

UserIDEmployees表中是我的FK专栏.我正试图UserID在我的ActiveDirectories表中引用它.我收到此错误:

外键'UserID'在引用表'Employees'时引用了无效的列'UserID'.

foreign-key-relationship sql-server-2008

102
推荐指数
3
解决办法
30万
查看次数

实体框架代码 - 首先是null外键

我有一个User< Country模特.用户属于某个国家/地区,但可能不属于任何(空外键).

我该如何设置?当我尝试插入具有空国家/地区的用户时,它告诉我它不能为空.

模型如下:

 public class User{
    public int CountryId { get; set; }
    public Country Country { get; set; }
}

public class Country{
    public List<User> Users {get; set;}
    public int CountryId {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

错误: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}

mapping entity-framework foreign-key-relationship ef-code-first entity-framework-4.1

98
推荐指数
3
解决办法
8万
查看次数

如何更改外键引用操作?(行为)

我已经设置了一个包含带有外键的列的表,设置为ON DELETE CASCADE(删除父项时删除子项)

SQL命令将其更改ON DELETE RESTRICT为什么?(如果有子女,则无法删除父母)

mysql foreign-keys foreign-key-relationship

94
推荐指数
5
解决办法
12万
查看次数

为什么在多态关联中没有外键?

为什么在多态关联中没有外键,例如下面表示为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
Run Code Online (Sandbox Code Playgroud)

database ruby-on-rails foreign-key-relationship polymorphic-associations

75
推荐指数
1
解决办法
3万
查看次数

SQL Server 2008:表中的列与现有主键或唯一约束不匹配

我需要对SQL Server 2008数据库进行一些更改.

这需要创建一个新表,并在新表中插入一个引用已存在表的主键的外键.所以我想在我的新tblTwo之间建立一个关系,它引用了tblOne的主键.

但是,当我尝试这样做(通过SQL Server Management Studio)时,我收到以下错误:

表'tblOne'中的列与现有主键或UNIQUE约束不匹配

我不确定这意味着什么,我想知道它是否有任何解决方法?

sql sql-server foreign-keys foreign-key-relationship

56
推荐指数
4
解决办法
7万
查看次数

什么是Django中的OneToOne,ManyToMany和ForeignKey字段之间的区别?

我在Django模型中解决关系时遇到了一些困难.

有人可以解释OneToOne,ManyToMany和ForeignKey之间的区别吗?

python django many-to-many one-to-one foreign-key-relationship

43
推荐指数
1
解决办法
1万
查看次数