标签: foreign-keys

强制drop mysql绕过外键约束

我试图删除数据库中的所有表,除了一个,我最终得到以下错误:

无法删除或更新父行:外键约束失败

当然,我可以试错,看看那些关键约束是什么,并最终删除所有表但我想知道是否有一种快速方法强制删除所有表(因为我将能够重新插入那些我不想删除).

谷歌针对某些建议使用以下方法的网站:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;
Run Code Online (Sandbox Code Playgroud)

简短的回答是它没有真正做到这一点,因为我最终收到了同样的错误,而我能够删除更多的表.我已经在Stack Overflow上看到了将所有外键链接到某个表的方法,但这样做太费时了,除非我编写所有脚本(在没有其他选项的情况下这是可行的)

数据库是4.1所以我无法使用 DROP DATABASE

想法?

mysql foreign-keys sql-drop

131
推荐指数
3
解决办法
14万
查看次数

Ruby on Rails.如何在a:属于关系中使用Active Record .build方法?

我一直无法在Rails中找到关于.build方法的任何文档(我目前正在使用2.0.2).

通过实验,似乎您可以使用构建方法has_many在保存记录之前将记录添加到关系中.

例如:

class Dog < ActiveRecord::Base
  has_many :tags
  belongs_to :person
end

class Person < ActiveRecord::Base
  has_many :dogs
end

# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true
Run Code Online (Sandbox Code Playgroud)

这将正确地保存带有外键的狗和标签.这似乎不适用于某种belongs_to关系.

d = Dog.new
d.person.build # => nil object on nil.build
Run Code Online (Sandbox Code Playgroud)

我也试过了

d = Dog.new
d.person = Person.new
d.save # => true
Run Code Online (Sandbox Code Playgroud)

Dog在这种情况下未设置外键,因为在保存时,新人没有id,因为它尚未保存.

我的问题是:

  1. 如何构建工作,以便Rails足够聪明,弄清楚如何以正确的顺序保存记录?

  2. 我怎样才能在belongs_to关系中做同样的事情?

  3. 我在哪里可以找到有关此方法的任何文档?

谢谢

activerecord ruby-on-rails foreign-keys

128
推荐指数
2
解决办法
12万
查看次数

如何将外键添加到现有SQLite表?

我有下表:

CREATE TABLE child( 
  id INTEGER PRIMARY KEY, 
  parent_id INTEGER, 
  description TEXT);
Run Code Online (Sandbox Code Playgroud)

如何添加外键约束parent_id?假设启用了外键.

大多数示例假设您正在创建表 - 我想将约束添加到现有表中.

sql sqlite ddl foreign-keys

118
推荐指数
6
解决办法
11万
查看次数

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万
查看次数

外键在数据库设计中是否真的必要?

据我所知,外键(FK)用于帮助程序员以正确的方式操作数据.假设程序员实际上已经以正确的方式执行此操作,那么我们真的需要外键的概念吗?

外键还有其他用途吗?我在这里错过了什么吗?

database oracle foreign-keys

104
推荐指数
14
解决办法
3万
查看次数

错误代码:1005.无法创建表'...'(错误号:150)

我在互联网上搜索了这个问题的解决方案并检查了SO问题,但没有解决方案适用于我的情况.

我想从表sira_no到metal_kod创建一个外键.

ALTER TABLE sira_no
    ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)
    REFERENCES metal_kod(METAL_KODU)
    ON DELETE SET NULL
    ON UPDATE SET NULL ;
Run Code Online (Sandbox Code Playgroud)

该脚本返回:

Error Code: 1005. Can't create table 'ebs.#sql-f48_1a3' (errno: 150)
Run Code Online (Sandbox Code Playgroud)

我尝试在索引表中添加索引:

CREATE INDEX METAL_KODU_INDEX ON metal_kod (METAL_KODU);
Run Code Online (Sandbox Code Playgroud)

我在两个表(charset和collat​​ion)上检查了METAL_KODU.但无法找到解决这个问题的方法.有谁有想法吗?提前致谢.

编辑:这是metal_kod表:

METAL_KODU    varchar(4)    NO    PRI
DURUM    bit(1)    NO
METAL_ISMI    varchar(30)    NO
AYAR_YOGUNLUK    smallint(6)    YES        100
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys mysql-error-1005

99
推荐指数
3
解决办法
15万
查看次数

MySQL使用外键创建表,给出错误:150

我试图在MySQL中创建一个带有两个外键的表,它引用了另外两个表中的主键,但是我得到一个错误:150错误,它不会创建表.

这是所有3个表的SQL:

CREATE TABLE role_groups (
  `role_group_id` int(11) NOT NULL `AUTO_INCREMENT`,
  `name` varchar(20),
  `description` varchar(200),
  PRIMARY KEY (`role_group_id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `roles` (
  `role_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50),
  `description` varchar(200),
  PRIMARY KEY (`role_id`)
) ENGINE=InnoDB;

create table role_map (
  `role_map_id` int not null `auto_increment`,
  `role_id` int not null,
  `role_group_id` int not null,
  primary key(`role_map_id`),
  foreign key(`role_id`) references roles(`role_id`),
  foreign key(`role_group_id`) references role_groups(`role_group_id`)
) engine=InnoDB;
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

mysql foreign-keys mysql-error-150

96
推荐指数
6
解决办法
12万
查看次数

Django:使用整数设置外键?

有没有办法使用模型的整数id设置外键关系?这将用于优化目的.

例如,假设我有一个Employee模型:

class Employee(models.Model):
  first_name = models.CharField(max_length=100)
  last_name = models.CharField(max_length=100)
  type = models.ForeignKey('EmployeeType')
Run Code Online (Sandbox Code Playgroud)

EmployeeType(models.Model):
  type = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

我希望拥有无限制员工类型的灵活性,但在部署的应用程序中,可能只有一种类型,所以我想知道是否有办法对id进行硬编码并以这种方式设置关系.这样我就可以避免db调用来获取EmployeeType对象.

django optimization foreign-keys django-models

95
推荐指数
2
解决办法
4万
查看次数

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

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

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

mysql foreign-keys foreign-key-relationship

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

什么是MySQL FK的正确命名约定?

因为它们必须是唯一的,我应该在MySQL数据库中命名FK?

mysql foreign-keys naming-conventions

92
推荐指数
3
解决办法
5万
查看次数