如何创建外键
来自表tGeoAnswers列'locationId'
表tLocations列'id'?
ALTER TABLE
tGeoAnswers
ADD
FK_Answer_Location
FOREIGN KEY
(locationId)
REFERENCES
tLocations(id)
Run Code Online (Sandbox Code Playgroud)
我正在尝试这个我找到的代码,但是我收到以下错误:
列'FK_Answer_Location'的定义必须包含数据类型
我现在正在使用一些有点笨拙的数据库,在所有错误的地方定义了外键,我想将它们全部删除,然后从头开始.我不希望删除列,只是外键关系.
如何从整个数据库中删除所有外键?(或按表格表).
谢谢.
编辑:忘了说,我有PHPMyAdmin可供使用.
我的大部分sql代码都是生成的(来自POD).现在我有问题,表user_data有一个FK到ref_status,它指向两个不同的user_data.我的代码执行以下操作
然后我得到了例外
Foreign key 'FK__...__0F975522' references invalid table 'user_data'.
Run Code Online (Sandbox Code Playgroud)
如果他们使用彼此的两个作为参考,我如何创建两个表?我认为,因为它是在同一个交易中,它会起作用.我还要注意这个代码在sqlite中工作正常,启用了FK支持(自上个月发布的System.Data.SQLite以来一直支持).那么我期望如何创建这两个表呢?
根据2010年的这个帖子,"EnforceFKConstraints"连接字符串属性应该在未来的SQLite版本中实现.有谁知道开发商是否已经开始这样做了?
如果没有,是否有另一种方法可以启用外键支持而不在每个连接上执行"PRAGMA foreign_keys = ON"?我需要这个以确保删除总是级联.
这是2个表的sql
CREATE TABLE Customer(
c_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
f_name VARCHAR(50) NOT NULL,
l_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
number INTEGER,
date_joined DATE NOT NULL CHECK (date_added <= now())
);
CREATE TABLE Address(
a_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
c_id INTEGER NOT NULL REFERENCES Customer(c_id) ON DELETE CASCADE,
billing BOOLEAN,
f_line VARCHAR(50) NOT NULL,
s_line VARCHAR(100),
county VARCHAR(20) NOT NULL,
p_code VARCHAR(7) NOT NULL,
number INTEGER(11)
);
Run Code Online (Sandbox Code Playgroud)
但是,当我删除一个客户时,他们的地址不会被删除,任何想法为什么?
在我的一个模型中,我希望只有在另一个布尔模型字段为真时才需要外键对象.如何配置管理站点以这种方式运行?
我的models.py包含:
from django.db import models
class ThingOne(models.Model):
name = models.CharField(max_length=100)
class ThingTwo(models.Model):
name = models.CharField(max_length=100)
use_thingone = models.BooleanField()
thingone = models.ForeignKey(ThingOne, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我的admin.py包含:
from myapp.models import ThingOne
from myapp.models import ThingTwo
from django.contrib import admin
admin.site.register(ThingOne)
admin.site.register(ThingTwo)
Run Code Online (Sandbox Code Playgroud)
thingone如果use_thingone是真的,我该如何调整它以产生一个必需的外键字段?
我正在尝试重新定义我的数据库设计添加一些额外的表,所以在我的表Departaments和Jobs中没有重复的名称...
但我得到的错误121与外键有关,你能解释一下这个问题的原因吗?
我试图做这样的事情,但在sqlfiddle没有运气,我现在正在工作
CREATE TABLE Employee(
EmployeeID INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
Sex CHAR(1) NOT NULL,
Address VARCHAR(80) NOT NULL,
Security VARCHAR(15) NOT NULL
);
CREATE TABLE Departments (
DeptID INTEGER NOT NULL PRIMARY KEY,
DeptName VARCHAR(30) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
如果我取消注释代码,我得到 架构创建失败:无法创建表'db_2_2bf4a.project-employee'(错误号:121):
CREATE TABLE `Dept-Employee`(
EmployeeID INTEGER NOT NULL,
DeptID INTEGER NOT NULL,
CONSTRAINT fk_DeptID FOREIGN KEY (DeptID) REFERENCES Departments(DeptID),
CONSTRAINT fk_EmployeeID FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
);
CREATE TABLE `Dept-Manager`(
EmployeeID INTEGER NOT NULL, …Run Code Online (Sandbox Code Playgroud) 如果我已经拥有外键的id,那么在symfony2中的对象中插入外键的最佳做法是什么?
如果我有一个动作:
/**
* @Route("assignCategory/{category}/product/{product}")
*/
public function assignCategory($category, $product)
{
...
// here i should set the category to the existing product
...
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢从数据库中检索类别的想法.
如果你在会话中有id并且你想将它们存储到对象但是没有从数据库中检索它,那么这也适用...所以...应该最好的做法是什么?
当我在Bluemix上的DashDB(DB2)中创建一个表时,如下所示:
CREATE TABLE DEPARTMENT (
depname CHAR (10) UNIQUE NOT NULL ,
phone INTEGER
) ;
ALTER TABLE DEPARTMENT ADD CONSTRAINT DEPARTMENT_PK PRIMARY KEY ( depname ) ;
CREATE TABLE EMPLOYEE (
"EmpNr" NUMERIC (3) UNIQUE NOT NULL ,
empname CHAR (20) ,
depname CHAR (10) ,
EMPLOYEE2_title CHAR (20)
);
ALTER TABLE EMPLOYEE ADD CONSTRAINT EMPLOYEE_PK PRIMARY KEY ( "EmpNr" ) ;
ALTER TABLE EMPLOYEE ADD CONSTRAINT EMPLOYEE_DEPARTMENT_FK FOREIGN KEY (depname ) REFERENCES DEPARTMENT ( depname ) ;
Run Code Online (Sandbox Code Playgroud)
Bluemix不允许为此表类型添加外键约束.
我有两个模型:
class Rule(models.Model):
name = models.CharField(max_length=200)
class Channel(models.Model):
id = models.CharField(max_length=9, primary_key=True)
name = models.CharField(max_length=100)
rule = models.ForeignKey(Rule, related_name='channels', blank=True)
Run Code Online (Sandbox Code Playgroud)
而且我必须能够在RuleAdmin界面内的管理站点中添加规则通道。因此,我创建了这两个管理员模型:
class ChannelAdmin(admin.TabularInline):
model = Channel
class RuleAdmin(admin.ModelAdmin):
model = Rule
inlines = [ChannelAdmin]
Run Code Online (Sandbox Code Playgroud)
但是,当我启动服务器时,出现以下错误:
ERRORS:
<class 'main.admin.ChannelAdmin'>: (admin.E202) 'main.Channel' has no ForeignKey to 'main.Channel'.
Run Code Online (Sandbox Code Playgroud)
仍然在django shell中,我可以像这样进行查询
rule = Rule.objects.get(pk=1)
rule.channels.all()
Run Code Online (Sandbox Code Playgroud)
总有一些明显的东西,但我只是想不通。
foreign-keys ×10
mysql ×3
django ×2
django-admin ×2
python ×2
sql ×2
sql-server ×2
.net ×1
c# ×1
dashdb ×1
db2 ×1
doctrine ×1
ibm-cloud ×1
sqlite ×1
symfony ×1