标签: foreign-keys

错误代码:1822。添加外键约束失败。引用表“employees”中缺少约束“projects_ibfk_1”的索引

CREATE DATABASE employeeDB;
USE employeeDB;

CREATE TABLE employees(
    employeeid NUMERIC(9),
    firstname VARCHAR(10),
    lastname VARCHAR(20),
    deptCode CHAR(5),
    salary NUMERIC(9, 2),
    PRIMARY KEY (employeeid)
);

CREATE TABLE projects(
    projectid CHAR(8),
    deptcode CHAR(5),
    description VARCHAR(200),
    startdate DATE,
    stopdate DATE,
    revenue NUMERIC(12, 2),
    PRIMARY KEY (projectid),
    FOREIGN KEY (deptcode) REFERENCES employees(deptCode)
);

CREATE TABLE departments(
    code CHAR(5),
    name VARCHAR(5),
    managerid NUMERIC(9),
    subdeptof CHAR(5),
    PRIMARY KEY (code),
    FOREIGN KEY (managerid) REFERENCES employees(employeeid),
    FOREIGN KEY (subdeptof) REFERENCES projects(deptcode)
);

ALTER TABLE employees ADD FOREIGN KEY (deptCode) …
Run Code Online (Sandbox Code Playgroud)

mysql sql constraints foreign-keys error-code

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

SQLite中的外键触发器

SQLite附带了一个实用程序genfkey,它将生成触发器以强制执行外键约束.这是来源.还有一个README,只需将之前的url更改为f = sqlite/tool/genfkey.README(stackoverflow只允许我发布一个url)

每个FK生成两对触发器:引用表上的BEFORE INSERT和BEFORE UPDATE,以及引用表上的BEFORE DELETE和AFTER UPDATE.我无法弄清楚为什么最后的触发器是AFTER而不是像其他触发器一样.请参阅源代码中的第741行,或者只搜索"AFTER",它是文件中唯一的实例.

它不是一个大问题 - 如果你在一个事务中,并且AFTER触发器产生错误,你仍然可以回滚.我只是想知道是否有人有任何想法为什么它不同.

sqlite triggers foreign-keys

2
推荐指数
1
解决办法
1879
查看次数

EF FluentAPI 0..1到*映射

如何在EF 4.0 FluentAPI CTP5中映射0..1到*关系?我一直在犯这个错误

由于"从属角色"中的所有属性都是不可为空的,因此"主体角色"的多重性必须为"1".

我不知道如何解决它..

我的代码看起来像这样

    public class Child{
        public int pID { get; set; }
        public Parent Parent_Object{ get; set; } 
        public int Parent{ get; set; } 

        public Child() {
        }
    }


    public class Parent {
        public int pID { get; set; }
        public List<Child>  Children { get; set; }

        public Parent () {
        }
    }
Run Code Online (Sandbox Code Playgroud)

对于映射,代码看起来像这样

modelBuilder.Entity<Child>().HasKey(c=> c.pID);  
modelBuilder.Entity<Parent>().HasKey(c=> c.pID); 
modelBuilder.Entity<Child>().HasOptional(c=> c.Parent_Object)
                            .WithMany(p => p.Children)
                            .HasForeignKey(p => p.Parent);
Run Code Online (Sandbox Code Playgroud)

也有可能只有

public Parent Parent{ get; set; } 
Run Code Online (Sandbox Code Playgroud)

代替

public …
Run Code Online (Sandbox Code Playgroud)

mapping fluent-interface foreign-keys entity-framework-4

2
推荐指数
1
解决办法
4868
查看次数

MySQL和Rails中的外键建议

我正在开发我的第一个真正的rails项目,我正在寻找一些专业建议.

我期待在MySQL数据库中有四个表(用户,书籍,评论,标签),并适用以下业务规则.

用户可以为一本书制作一个或多个评论,但评论只能属于一本书.用户可以针对书籍放置一个或多个标签,但标签只能属于一本书.

从图形上看,我提到了以下内容:( ascii art永远不会死)

+---------+             +---------+  
|         |             |         |
|         |             |         |
|  User   |1           1|  Book   |
|         |-----   -----|         |
+---------+     |  |    +---------+
     | 1        |  |          | 1
     |          |  |          |
     |          |  |          |              
     | 1,*      |  |          | 1,*
+---------+     |  | 1,*+---------+  
|         |     ---+----|         |
|         |1,*     |    |         |
| Comment |---------    |   Tag   |
|         |             |         |
+---------+             +---------+
Run Code Online (Sandbox Code Playgroud)

我正在寻找有关如何在Rails中配置我的模型的任何建议.目前我正在设置:

class Users
  has_many :tags …
Run Code Online (Sandbox Code Playgroud)

ruby mysql ruby-on-rails foreign-keys

2
推荐指数
1
解决办法
2039
查看次数

两个表与外键引用相互回复

我有两个应用程序 - 一个用于狗,一个用于垃圾 - 理想情况下我会将外键互相支持,如下所示:

在dogs.py中:

from litters.py import Litter
class Dog(models.Model):
    name = models.CharField(max_length=55)
    Litter = models.ForeignKey(Litter, blank=True)
Run Code Online (Sandbox Code Playgroud)

在litters.py中

from dogs.py import Dog
class Litter(models.Model):
    name = models.CharField(max_length=55)
    sire = models.ForeignKey(Dog, related_name='dog_sire_set')
    dam  = models.ForeignKey(Dog, related_name='dog_dam_set'
Run Code Online (Sandbox Code Playgroud)

在创造一个新的垃圾时,我希望垃圾的大坝和父亲(妈妈和爸爸)来自我的狗桌,因此两个FK's to dam and sire.所以在我创造一个垃圾之前,我必须至少有两个狗条目.

后来,在描述新的狗入境时,我想知道狗的窝是否已知,而且那窝应该来自我的垃圾桌.不应该要求狗有一窝,但如果该场不是空的,那么我想知道它.

上面的代码不起作用,但它演示了我想要实现的目标.我很感激有关如何解决这个问题的任何提示.谢谢.

django model foreign-keys

2
推荐指数
1
解决办法
2927
查看次数

MySQL关系

我试图弄清楚如何构建这个数据库.我之前使用过Apple的核心数据就好了,我现在正在开发一个需要MySQL的不同项目.我是MySQL的新手,所以请放轻松我.:)

在这个例子中,假设我有三个表,User,Device,和Location.把它画出来,一个Location可以有很多Device,但Device只能有一个Location; 每个User都有它的主键,UserID我需要使用它来获取正确的信息.

那么如何在这里建立这样的关系呢?我听说过创建索引和外键,我不确定它们是如何工作的.

最后,我需要做的是能够访问User特定的表并查看Locations与之相关的所有内容User.我还需要能够Device肯定地添加Location一个特定的User.

再次,请原谅我,因为我正试图绕过MySQL.我正在使用HeidiSQL进行数据库编辑.

mysql database-design foreign-keys

2
推荐指数
1
解决办法
4059
查看次数

Yii - 如何通过管理页面上的外键/相关键列进行搜索?

在我的数据库中,我有两个表,制造商和塑料:

CREATE TABLE `manufacturer` (                                                                   
  `id` int(11) NOT NULL AUTO_INCREMENT,                                                                          
  `name` varchar(64) DEFAULT NULL,                                                                               
  PRIMARY KEY (`id`)                                                                                             
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8

CREATE TABLE `plastic` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `manufacturer_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`,`manufacturer_id`),
  KEY `manufacturer_id` (`manufacturer_id`),
  CONSTRAINT `plastic_ibfk_1` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturer` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,塑料具有Yii称之为与制造商的BELONGS_TO关系 - 一个制造商可以制造几种不同的塑料.

我试图通过默认塑料管理页面中的制造商名称进行搜索,但搜索字段不会显示在"制造商"列中.我遵循了这个指南,我想我差不多了,但是我被困在一个小细节上.

在我的Plastic模型类中,根据上面的链接,我有:

class Plastic extends CActiveRecord
{
public $manufacturer_search; …
Run Code Online (Sandbox Code Playgroud)

php search activerecord foreign-keys yii

2
推荐指数
1
解决办法
6743
查看次数

将外键添加到组合键时出错

我在sql server中有两个表:

第一个表Message_Child有一个复合主键(MessageId,ChildId)

Message_Child (MessageId, ChildId, Date)
Run Code Online (Sandbox Code Playgroud)

第二个表应该包含表的外键Message_Child,所以我创建了两列:MessageId和ChildId.

Request (RequestId, MessageId, ChildId, type)
Run Code Online (Sandbox Code Playgroud)

我创建了约束如下:

Alter table Request
ADD FOREIGN KEY (MessageId, ChildId) REFERENCES Message_Child(MessageId, ChildId);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

引用的表'Message_Child'中没有主键或候选键与外键'FK_ Request _534D60F1' 中的引用列列表匹配.

编辑 添加代码:

Message_Child表:

CREATE TABLE [dbo].[Message_Child](
[ChildId] [int] NOT NULL,
[MessageId] [int] NOT NULL,
[Date] [datetime] NULL,
 CONSTRAINT [PK_Message_Child] PRIMARY KEY CLUSTERED 
(
[ChildId] ASC,
[MessageId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,      ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) …
Run Code Online (Sandbox Code Playgroud)

sql-server foreign-keys composite-key

2
推荐指数
1
解决办法
140
查看次数

mysql中On Delete Cascade和On Update Cascade之间的区别

我在MySQL数据库中有两个表 - parent, child. 我正在尝试根据父表向我的子表添加外键引用.有没有之间的任何显著差异ON UPDATE CASCADEON DELETE RESTRICT

我的父表

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

我的问题是:以下sql查询之间有什么区别.

1)

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON DELETE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

2)

CREATE TABLE child (
    id INT, 
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id) 
        REFERENCES parent(id)
        ON UPDATE CASCADE
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

以下查询中是否有任何错误?

3)

 CREATE TABLE child (
        id …
Run Code Online (Sandbox Code Playgroud)

mysql database foreign-keys phpmyadmin foreign-key-relationship

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

引用另一个架构的外键

对于我的项目,我使用的是oracle数据库,其中必须使用2种不同的数据库架构。请考虑以下情形-

我有一个模式A,在其中有一个table_a带有主键的表apk

我有另一个模式B,在其中有一个table_b带有主键的表bpk

如果这两个表都在同一个数据库中,那么我可以轻松建立主键-外键关系。

但是我能否在这两个列之间创建主键-外键关系(或类似的东西)- A.table_a.apkB.table_b.pbk

提前致谢。

database oracle foreign-keys primary-key relational-database

2
推荐指数
1
解决办法
3608
查看次数