标签: foreign-keys

使用JDBC获取所有外键

我正在使用postgreSQL.我试图从表中获取所有外键.这是我目前使用的方法.

public String getFKeyData(String tableName, int i) throws SQLException {
    DatabaseMetaData dm = connection.getMetaData();
    ResultSet rs = dm.getImportedKeys(null, null, tableName);
    while (rs.next()) {
        fkTableData = rs.getString(i);
    }
    return fkTableData;
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但它只能得到我最后一个外键,如果表中只有一个,但这不符合我的需要.我在网上看到的所有例子与此非常相似,只提供一个外键作为输出.目前我只是在按下按钮时打印数据.

System.out.println(databaseConnection.getFKeyData(tableName,3));
System.out.println(databaseConnection.getFKeyData(tableName,4));
System.out.println(databaseConnection.getFKeyData(tableName,8));
Run Code Online (Sandbox Code Playgroud)

3获取从中导入外键的表.4获取导入的主键列的名称.8获取外键列的名称.如果有人可以提供帮助,我会非常感激.

java postgresql jdbc foreign-keys

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

由于模糊冲突,无法添加外键约束

试图运行:

ALTER TABLE [dbo].[Table1] ADD
CONSTRAINT [FK_Table1_ScenarioResult] 
FOREIGN KEY ([ScenarioResultID]) REFERENCES [dbo].[ScenarioResult] ([ScenarioResultID]) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

得到此错误:

消息547,级别16,状态0,行1 ALTER TABLE语句与FOREIGN KEY约束"FK_Table1_ScenarioResult"冲突.冲突发生在数据库"8362",表"dbo.ScenarioResult",列'ScenarioResultID'中.

我检查过 :

  • 约束尚不存在,并且同一列上不存在其他约束
  • 列中的值在两个表中都匹配
  • 列的类型是相同的
  • 尝试了一个不同的名字,也失败了

SQL Server 2008 R2

我有什么想法可以试试吗?

sql sql-server conflict constraints foreign-keys

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

Django:表单未保存到我的数据库中

我的发送要约的表格已正确显示,并且提交要约时没有错误,它们没有保存在我的数据库中。我知道通过检查管理站点,不会保存任何对象。但是另一方面,我已经编写了用于注册的代码,并且用户已保存在数据库中。

我怀疑我的两个模型之间的ForeignKey关系是元凶。

models.py

from django.db import models

class User(models.Model):

username = models.CharField(max_length=30, unique=True, blank=False)
password1 = models.CharField(max_length=40, blank=False)
password2 = models.CharField(max_length=40, blank=False)
mail = models.EmailField(unique=True, blank=False)
birthday = models.DateField(blank=False)
date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date d'inscription")
def __str__(self):
    return self.username 

class Offer(models.Model):

publisher = models.ForeignKey(User)
content = models.TextField()
date = models.DateTimeField(auto_now_add=True, auto_now=False,    verbose_name="Date de parution")

def __str__(self):
    return self.publisher.username
Run Code Online (Sandbox Code Playgroud)

表格

from django import forms
from django.contrib import admin
from django.contrib.auth.hashers import make_password, check_password
from django.utils.translation import ugettext_lazy as _
from myuser.models …
Run Code Online (Sandbox Code Playgroud)

django foreign-keys django-models django-1.8

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

在Oracle SQL中删除表

每当我尝试删除表或创建表时,它都会显示以下错误:

DROP TABLE SUBURB;
DROP TABLE STOCKITEM;
DROP TABLE MANUFACTURER;
DROP TABLE WAREHOUSE;
DROP TABLE CITY;
DROP TABLE STATE;
Run Code Online (Sandbox Code Playgroud)

第1行出错:ORA-02449:外键引用的表中的唯一/主键

 CREATE TABLE STATE (
 statecode varchar(3)
 ,statename varchar(30)
 ,population number(8)
 ,primary key(statecode)
  );
Run Code Online (Sandbox Code Playgroud)

第1行出错:ORA-00955:现有对象已使用名称

任何人都可以解释为什么会这样吗?

sql oracle foreign-keys

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

以编程方式获取实体框架6中POCO之间的外键

我面临着一个EF6 Code First上下文,其中有几个DbSetPOCO,它们之间有导航属性(和外键),例如:

public partial class Person
{
    public         Guid                 Id      { get; set; }
    public virtual ICollection<Address> Address { get; set; } 
}

public partial class Address
{
    public         Guid   Id          { get; set; }
    public         Guid   FK_PersonId { get; set; }
    public virtual Person Person      { get; set; }
}

modelBuilder.Entity<Person>()
    .HasMany            (e => e.Address)
    .WithRequired       (e => e.Person)
    .HasForeignKey      (e => e.FK_PersonId)
    .WillCascadeOnDelete(false);
Run Code Online (Sandbox Code Playgroud)

鉴于这些类型,是否有任何适当的方式(即,不借助迭代通过反射和"猜测"的属性POCO /字段)以编程确定Address具有FK_PersonId指向Id的属性Person

c# entity-framework foreign-keys poco ef-code-first

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

在laravel中使用外键保存对象

我使用PHP,Laravel 5.2和MySQL.

在用户注册期间,我需要创建一个新的患者.但是,患者有用户ID,联系人ID和监护人ID(外键).

当我尝试保存()患者时,我得到以下异常:

SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'patient_id'(SQL:update usersset patient_id= 0,updated_at= 2016-06-07 12:59:35其中id= 6)

问题是我没有patient_id列.相反,我有耐心等待.

我不知道如何解决这个问题.任何帮助将不胜感激.如果这很重要,我可以包含迁移文件.

UserController.php

public function postSignUp(Request $request)
{
    $this->validate($request,[
        'email' => 'required|email|unique:users',
        'name' => 'required|max:100',
        'password' => 'required|min:6'
    ]);


    $guardian = new Guardian();
    $guardian->guardianId = Uuid::generate();;
    $guardian->save();

    $contact = new Contact();
    $contact->contactId = Uuid::generate();
    $contact->save();

    $user = new User();
    $user->email = $request['email'];
    $user->name = $request['name'];
    $user->password = bcrypt($request['password']);
    $user->save();


    $patient = new Patient();
    $patient->patientId = (string)Uuid::generate();
    $patient->user()->save($user);
    $patient->contact()->save($contact); …
Run Code Online (Sandbox Code Playgroud)

php mysql foreign-keys laravel

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

在Django Rest Framework中,如何限制序列化的外键对象的数量

我正在序列化产品模型及其评论.这是我的简单代码:

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    comment_set = CommentSerializer(many=True, read_only=True)
    class Meta:
        model = Product
        fields = [
            'title',
            'comment_set'
        ]


class CommentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Comment
        fields = [
            'text',
        ]


class Comment(models.Model):
    product = models.ForeignKey(Product, null=True, blank=True, db_index=True)


class Product(models.Model):
    title = models.CharField(max_length=50)
    ...
Run Code Online (Sandbox Code Playgroud)

问题:如果产品有很多评论.例如,500条评论.所有500个都被序列化了.

如何将结果限制为我自己选择的一些,如100条评论?

我在发布之前做了一些研究,但只发现了有关过滤的问题.

谢谢.

django serialization foreign-keys foreign-key-relationship django-rest-framework

2
推荐指数
3
解决办法
1686
查看次数

向索引列添加外键是否会提高性能?

一位同事声称他过去使用外键来优化查询.我认为仅在插入或更新表中的数据时才使用外键.我不知道它们如何用于加速搜索.

外键如何在创建执行计划时提供帮助?我错过了什么吗?如果是这样,那么它在什么情况下有帮助?

(我们使用PostgreSQL,我没有太多的经验.它有可能与Oracle或MySQL的行为不同吗?)

postgresql indexing foreign-keys query-optimization

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

如何将外键指向两个主键?

我正在尝试简化数据库结构,我有两个表matchesteam_statistics:

在此输入图像描述

在这里,在team_statistics表中team_statistics.team_id应该是一个外键引用matches.teams_idmatches.teams_id1,同样team_statistics.group_id应该是一个外键引用matches.groups_idmatches.groups_id1

如何在PostgreSQL中执行此操作?

如果存在具有与另一个表这样做的其他方式matchesteam_statistics我开放的建议,但我仍想知道如何有一个外键引用两个主键.

sql postgresql database-design many-to-many foreign-keys

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

未从NodeJS / JavaScript触发SQLite FOREIGN KEY约束

我正在尝试创建一个POST路由,如下所示。我的时间表表上有一个Employee表,上面设置了FOREIGN KEY约束。当我尝试使用数据库浏览器从一个不存在的员工那里插入时间表时,我得到了由约束触发的正确错误。但是,当我运行下面的代码时,它会忽略此约束并插入记录。我是否对此设置不正确,或者在这种情况下这不是有效的约束?

timesheetRouter.post("/", getParams, (req, res, next) => {
    const tsData = req.body.timesheet;
    console.log("ID", req.empID);
    db.run(`insert into Timesheet (hours, rate, date, employee_id) 
        values ($hours, $rate, $date, $emp);`, {
        $hours: tsData.hours,
        $rate: tsData.rate,
        $date: tsData.date,
        $emp: req.empID
    }, function(err) {
        if (err) {
            return res.status(404).send(err);
        } else {
            db.get("select * from Timesheet where id = $id", {$id: this.lastID},
                (err, row) => {
                    return res.status(201).send({timesheet: row});
                });
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

表创建代码:

db.serialize(() => {
    db.run("DROP TABLE IF EXISTS Timesheet", err => { …
Run Code Online (Sandbox Code Playgroud)

javascript sqlite foreign-keys node.js

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