标签: foreign-keys

MySQL是否为外键自动编制索引?

任何人都可以告诉我MySQL是否自动索引其外键?

我的MySQL正在使用MyIsam Engine.

mysql indexing myisam foreign-keys isam

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

MySQL查看外键可以为NULL的位置

我想知道如何创建即使外键为NULL也可以工作的视图.例如,我们有一个表Person,它有一个主键和两个外键:

  • IdPerson
  • FkName
  • FkSurname

两个外键都可以为NULL.现在我们还有两个表,表:

  • IdName
  • 名称

和表:

  • IdSurname

现在我们创建视图以显示每个Person的名称和姓氏:

CREATE VIEW `Database`.`ViewPerson` AS 
SELECT `N`.`Name`, `S`.`Surname`
FROM `Person` `P`, `Name` `N`, `Surname` `S`
WHERE (`P`.`FkName` = `N`.`IdName`) AND (`P`.`FkSurname` = `S`.`IdSurname`)
Run Code Online (Sandbox Code Playgroud)

问题是,如果外键FkSurname为NULL,则即使定义了FkName,也不会显示该行.我想要即使两个外键都是NULL,它仍然返回两列都为NULL的行.现在我知道我可以通过添加表名和表Surname行来解决它,在Name/Surname下有NULL,然后在FkName和FkSurname中引用在这两列下有NULL值的行.但我仍然想知道是否存在外键为NULL并返回行的解决方案.

mysql foreign-keys view

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

mysql - 外键级联更新

我有一个关于如何使用第二个字段作为约束更新级联字段的问题.

结构是这样的(我删除了不必要的列):

nodes与列idNodeidDimension(它们一起形成主键).

forces带列idForce(PK)的表,idNode(外键到nodes.idNode)和idDimension.

级联更新和删除所有内容.

这种结构似乎出现的问题是:

如果在nodes我有一个像(1,1)和一个像(1,2)和在forces(1,1,1)和(1,1,2)的条目,我更新或删除nodes两个条目中的第一个条目forces将是影响.

我只需要影响那个也有相应idDimension的那个.如何修改当前结构呢?

编辑:表格 - 节点:

CREATE TABLE IF NOT EXISTS `nodes` (
  `idNode` varchar(11) NOT NULL,
  `idDimension` int(10) unsigned NOT NULL,
  `idNetwork` int(10) unsigned NOT NULL DEFAULT '0',
  `level` int(11) unsigned NOT NULL DEFAULT '0',
  `energy` bigint(20) DEFAULT NULL,
  `resources` bigint(20) unsigned NOT NULL DEFAULT '0',
  `x` int(11) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql sql foreign-keys foreign-key-relationship

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

如何在sql server中恢复更新查询?

我正在使用SQL Server作为我的数据库.现在有一个表有以下列.

PK_ID   FK_ID   Name   Description
1        5       ABC      ABCDE
2        7       EFG      EFT
3        8       XUZ      Xyz
4        11      TEF      TEF
Run Code Online (Sandbox Code Playgroud)

现在我错误地更新了一些具有空值的Fk_ID字段.现在我想回到我的所有fk_id,它由null值更新.那么有什么方法可以恢复之前有价值的fk_id?

任何人都可以帮我找出相同的解决方案吗?

sql sql-server foreign-keys revert sql-update

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

在Xampp上使用外键的MySQL表

我一直在寻找这里和其他地方的很多帖子,但我仍然无法使它工作.

我正在尝试在xampp上创建以下2个表.但即使添加了InnoDB,我在第二次使用外键时遇到了问题.

任何人都可以看看下面的代码,并告诉我在外键部分我做错了什么,以便xampp不接受表?谢谢!

CREATE TABLE fichas (
    id_ficha INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
    cod_produto VARCHAR(20) NULL,
    nome_produto VARCHAR(50),
    versao INT,
    data_ficha DATE,
    PRIMARY KEY (id_ficha)
) ENGINE=INNODB;

CREATE TABLE ident_dangers (
    id_fichas INT NOT NULL,
    class_subst TEXT NULL,
    simb_perigo VARCHAR(50) NULL,
    words_r VARCHAR (200) NULL,
    INDEX (id_fichas),
    FOREIGN KEY (id_fichas) REFERENCES fichas(id_ficha),
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys

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

使用外键创建表

嘿所有我正在尝试创建一个包含a的表Foreign Key,并且由于某种原因我收到错误.错误说明00907. 00000 - "missing right parenthesis"哪个是奇怪的,因为我没有随机的左括号.我查找了如何用a创建一个表,Foreign Key并导致以下代码:

Create Table EMPHIREINFO
(
empname VARCHAR2(10) NOT NULL FOREIGN KEY REFERENCES EMPADDRESS(empname),
empno NUMBER(4,0) NOT NULL PRIMARY KEY,
startdt DATE,
enddt DATE,
cntrlgth NUMBER(5,0)
)
Run Code Online (Sandbox Code Playgroud)

我试着和没有REFERENCES EMPADDRESS(empname),我仍然得到同样的错误.任何帮助表示赞赏,谢谢.

sql oracle foreign-keys create-table

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

两个主键引用外键

在我们的数据库系统中,我们有学生和人事领域.他们有PersonnelCardId和StudentCardId,我们把它们作为主键.然后我们有一个持有cardID的支付设备,我们宣称它是一个外键.在这种情况下我们无法插入行,经过研究后我们了解到我们无法将两个主键引用到外键.那么我们如何解决这种情况呢?谢谢.

sql database oracle foreign-keys foreign-key-relationship

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

使用外键创建表会显示错误

我正在尝试创建一个表,并且收到错误告诉我第9行周围有问题.这是代码.

CREATE TABLE shirts_link (
    adult VARCHAR(1) NOT NULL,
    kids VARCHAR(1) NOT NULL,
    babies VARCHAR(1) NOT NULL,
    shirt_id INT(4) NOT NULL,
    size_id INT(4) NOT NULL,
    price_id INT(4) NOT NULL,
    PRIMARY KEY (shirt_id,size_id,price_id),
    FOREIGN KEY (shirt_id) REFERENCES shirts(id),
    FOREIGN KEY (size_id) REFERENCES shirt_sizes(id),
    FOREIGN KEY (price_id) REFERENCES shirt_prices(id)
    )ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

这是我想要链接到的其他表格..

CREATE TABLE shirts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
    shirt_name VARCHAR(20) NOT NULL,
    men VARCHAR(10) NULL,
    women VARCHAR(10) NULL,
    boys VARCHAR(10) NULL,
    girls VARCHAR(10) NULL,
    babies VARCHAR(10) NULL, …
Run Code Online (Sandbox Code Playgroud)

mysql sql database foreign-keys

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

SQL删除外键问题

我有一个与外键有关的问题.我正在使用SQL Server 2008.

有两个表,Customer和Invoice,它们看起来像这样:

客户表:
CustomerID
名称
地址

发票表:
InvoiceID
日期
CustomerID

Customer表中的CustomerID列是主键,Invoice表中的CustomerID列具有外键.

我想删除Customer表中的一行,但删除Invoice表中的已连接行.有没有办法做到这一点?

编辑:
我忘了提到已删除的客户存储在日志表中,因此ID仍然存在,但在另一个表中

sql foreign-keys sql-server-2008

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

Mysql外键错误150

我是一个mysql初学者,我正在研究外键.我想创建三个表:用户,项目,订单并将它们链接在一起

用户表:

CREATE TABLE users (
user_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(user_id)
);
Run Code Online (Sandbox Code Playgroud)

物品表:

CREATE TABLE items (
item_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(item_id)
);
Run Code Online (Sandbox Code Playgroud)

订单表:

CREATE TABLE orders (
order_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
item_id INT,
quantity INT(10) NOT NULL,
user_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (item_id) REFERENCES items (item_id),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
Run Code Online (Sandbox Code Playgroud)

但我收到错误1005:无法创建表'new.orders'(错误:150)

我的代码出了什么问题?

谢谢!

mysql foreign-keys

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