标签: foreign-keys

Laravel 在删除时添加级联到现有表

在我的 Laravel 应用程序中,我有一张名为“研究”的表,另一个名为“论文”的表。它们具有一对多的关系,其中每个研究可以有一篇或多篇论文。在论文迁移文件中,我使用以下命令创建了外键约束:

        //foreign key for the research model
        $table->unsignedBigInteger('research_id');
        $table->index('researach_id');
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个新的迁移来添加级联 onDelete,以便在删除其父研究时删除论文。我该怎么做?我正在使用 Laravel 5.1

编辑

所以答案与接受的答案非常相似,只是我必须先删除该列,然后添加外键。因为我还没有进入生产环境,所以删除列不是问题,但如果您处于生产环境中,您最终可能会弄乱数据库中数据的一致性。所以要小心

migration foreign-keys cascading-deletes laravel

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

如何在 MySQL 中真正创建外键?

这听起来像是一个愚蠢的问题,因为实际上有数百个教程。

但无论我按照哪个教程创建 a foreign key,或者在我的例子中创建 a composite foreign key,即使表创建总是成功,MySQL Workbench 也不会显示任何foreign key信息。

如果我创建这两个示例表

CREATE TABLE parent (
id INT NOT NULL,
category VARCHAR(255) NOT NULL,
PRIMARY KEY (id, category)
);

CREATE TABLE child (
id INT PRIMARY KEY,
category VARCHAR(255) NOT NULL,
info TEXT,
CONSTRAINT fk FOREIGN KEY (id, category) REFERENCES parent(id, category)
);
Run Code Online (Sandbox Code Playgroud)

建表成功,但未列出外键。 在此输入图像描述

我缺少什么?这确实是很奇怪的行为,它们既不是 MySQL Workbench 显示的错误也不是警告。

mysql sql foreign-keys mysql-workbench

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

SQL:一个外键引用多个表之一中的主键

我正在开发一个应用程序,它将用作其他应用程序的可扩展框架.

其中一个基本类称为Node,而Nodes具有Content.SQL表看起来像这样:

TABLE节点(NodeId int,....等)

TABLE NodeContentRelationship(NodeId int,ContentType string,ContentId int)

扩展应用程序的开发人员将创建自己的内容类型.

显然,从关系数据库的角度来看,这是不好的,因为无法向NodeContentRelationship.ContentId添加外键关系,即使它外键列.

但是,解决方案非常简单和强大,所以我不愿意改变它.

你觉得怎么样 - 我是否在追寻一个痛苦的世界?

sql database foreign-keys relationship

0
推荐指数
1
解决办法
1507
查看次数

更改oracle中具有外键约束的列

我有一个在一个表中只有6个字符的列,它使用外键约束引用一个20个字符的列.我该如何解决?

注意:问题是由于Oracle SQL Developer Edit表的限制.当我执行特定的更改列时,它工作正常.

oracle foreign-keys

0
推荐指数
1
解决办法
1796
查看次数

如何使用netbeans 6.7定义外键?

我在使用mysql的netbeans中使用JPA,我需要定义一个外键.我想以图形方式进行,因为使用netbeans 6.7 UI创建表非常容易,而无需处理SQL命令.你能告诉我怎么做吗?

mysql netbeans jpa foreign-keys

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

为什么不能添加这个外键?

我有这个架构:

CREATE TABLE  `lotto`.`combinaciones` (
  `indice` mediumint(8) unsigned NOT NULL,
  `binario` int(10) unsigned NOT NULL,
  PRIMARY KEY  USING BTREE (`indice`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE  `lotto`.`sorteo` (
  `numeroSorteo` int(11) NOT NULL,
  `fechaSorteo` date NOT NULL,
  `precioCarton` double NOT NULL,
  `valorSerial` double NOT NULL,
  `valorMiniserial` double NOT NULL,
  `estatusSorteo` int(11) NOT NULL,
  `cantidadCartones` int(11) NOT NULL,
  PRIMARY KEY  (`numeroSorteo`),
  UNIQUE KEY `fechaSorteo` (`fechaSorteo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE  `lotto`.`cartones` (
  `numeroSorteo` int(11) NOT NULL,
  `serial` mediumint(9) NOT NULL,
  `indice` …
Run Code Online (Sandbox Code Playgroud)

mysql sql constraints foreign-keys

0
推荐指数
1
解决办法
251
查看次数

插入具有部分来自另一个表的值的记录

我有两张桌子,ProteinsSpecies.ProteinSpecies.Id外键约束.当我插入数据时,我知道蛋白质所属物种的名称,但不知道Id.所以我做了以下事情:

    PreparedStatement query = connection.prepareStatement(
        "SELECT Id FROM Species WHERE ShortName = ?");
    query.setString(1, protein.getSpecies().getShortName());
    ResultSet result = query.executeQuery();
    if (result.next()) {
        PreparedStatement statement = connection.prepareStatement(
        "INSERT INTO Proteins(SpeciesId, UniProtKBAccessionNumber) VALUES (?, ?)");

        statement.setString(1, result.getString(1));
        statement.setString(2, protein.getUniProtKBAccessionNumber().toString());

        statement.execute();
    }
    else
        throw new IllegalArgumentException("The species of this protein is not recognized!");
Run Code Online (Sandbox Code Playgroud)

基本上,我得到与名称对应的Id,然后插入蛋白质.这在许多方面看起来非常笨拙.是否有更优雅的方式来实现这一目标?我正在研究SQLite数据库.

sqlite select jdbc foreign-keys insert

0
推荐指数
1
解决办法
2994
查看次数

oracle primary_key和foreign_key

是否可以在没有主键和外键的情况下维护两个表之间的关系

如果可能的话怎么样?

oracle foreign-keys primary-key

0
推荐指数
1
解决办法
145
查看次数

用django选配外键?

在我的模型中,我想要一个外键的可选字段.我试过这个:

field = models.ForeignKey(MyModel, null=True, blank=True, default=None)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

model.mymodel_id may not be NULL
Run Code Online (Sandbox Code Playgroud)

我正在使用sqlite编辑:如果它可以帮助,这里是异常位置:

/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py in execute, line 200
Run Code Online (Sandbox Code Playgroud)

所以这是sqlite特定的问题,我想.

sqlite django foreign-keys optional

0
推荐指数
1
解决办法
2516
查看次数

0
推荐指数
1
解决办法
1504
查看次数