我正在使用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获取外键列的名称.如果有人可以提供帮助,我会非常感激.
试图运行:
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
我有什么想法可以试试吗?
我的发送要约的表格已正确显示,并且提交要约时没有错误,它们没有保存在我的数据库中。我知道通过检查管理站点,不会保存任何对象。但是另一方面,我已经编写了用于注册的代码,并且用户已保存在数据库中。
我怀疑我的两个模型之间的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) 每当我尝试删除表或创建表时,它都会显示以下错误:
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:现有对象已使用名称
任何人都可以解释为什么会这样吗?
我面临着一个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?
我使用PHP,Laravel 5.2和MySQL.
在用户注册期间,我需要创建一个新的患者.但是,患者有用户ID,联系人ID和监护人ID(外键).
当我尝试保存()患者时,我得到以下异常:
SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'patient_id'(SQL:update
userssetpatient_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) 我正在序列化产品模型及其评论.这是我的简单代码:
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
一位同事声称他过去使用外键来优化查询.我认为仅在插入或更新表中的数据时才使用外键.我不知道它们如何用于加速搜索.
外键如何在创建执行计划时提供帮助?我错过了什么吗?如果是这样,那么它在什么情况下有帮助?
(我们使用PostgreSQL,我没有太多的经验.它有可能与Oracle或MySQL的行为不同吗?)
我正在尝试简化数据库结构,我有两个表matches和team_statistics:
在这里,在team_statistics表中team_statistics.team_id应该是一个外键引用matches.teams_id和matches.teams_id1,同样team_statistics.group_id应该是一个外键引用matches.groups_id和matches.groups_id1
如何在PostgreSQL中执行此操作?
如果存在具有与另一个表这样做的其他方式matches和team_statistics我开放的建议,但我仍想知道如何有一个外键引用两个主键.
我正在尝试创建一个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) foreign-keys ×10
postgresql ×3
sql ×3
django ×2
c# ×1
conflict ×1
constraints ×1
django-1.8 ×1
indexing ×1
java ×1
javascript ×1
jdbc ×1
laravel ×1
many-to-many ×1
mysql ×1
node.js ×1
oracle ×1
php ×1
poco ×1
sql-server ×1
sqlite ×1