Mac*_*cha 89 mysql foreign-keys
如何使用MySQL的外键构造有什么好的解释吗?
我不太了解MySQL文档本身.到目前为止,我一直在使用连接和编程代码来处理外键.
问题的第二部分,使用MySQL的内置外键是否有任何改进?
Qua*_*noi 116
FOREIGN KEYS 确保您的数据一致.
它们不会在效率方面改进查询,只会使一些错误的查询失败.
如果你有这样的关系:
CREATE TABLE department (id INT NOT NULL)
CREATE TABLE employee (id INT NOT NULL, dept_id INT NOT NULL, FOREIGN KEY (dept_id) REFERENCES department(id))
Run Code Online (Sandbox Code Playgroud)
,department如果它有一些,你就不能删除它employee.
如果提供ON DELETE CASCADE给FOREIGN KEY定义,则引用行将与引用的行一起自动删除.
作为约束,FOREIGN KEY实际上会慢慢减慢查询速度.
从引用的表中删除或插入引用表时,需要执行额外的检查.
Cha*_*rch 31
使用真实外键的主要好处是确保数据完整性,并且能够在修改或删除某些内容时对相关项设置级联操作.
例如,假设您正在编写论坛.您有一个带有主键的"主题"表topics.topic_id,并且您有一个"posts"表,其中帖子附加到具有该列的主题,该列posts.topic_id是主题表的外键.
此外键关系可确保每个帖子都附加到有效主题.如果您拥有的唯一主题是ID#1,那么在主题#2附带的数据库中就不可能存在帖子.数据库确保了这一点.
对于级联权益,您可以对其进行设置,以便在从主题表中删除主题时,数据库会自动删除posts表中附加到此主题的所有帖子.这很好,因为它删除了您必须记住手动执行的步骤,当您将许多表链接在一起时,这可能会非常复杂.使用外键,可以自动清除所有关系.
Gau*_*mar 11
1.FOREIGN KEYS只是确保您的数据一致.
2.如果我们将删除级联应用于外键定义,当父行将删除时,引用行将自动删除.
3.如果我们将Update Cascade应用于外键定义,则当父行将更新时,Child行将自动更新.
查询:ALTER TABLE子ADD FOREIGN KEY(parent_id)REFERENCES parent(id)ON UPDATE CASCADE ON DELETE CASCADE;
主要优点是您可以限制可以在表格中输入的值; 如果您尝试输入引用表中不存在的值,您将无法执行此操作.
此外,如果更新或删除引用表中的值,则可以将其设置为自动更新值,或者在级联中删除包含该值的任何行.
利用您的代码确实是一个很棒的功能.
| 归档时间: |
|
| 查看次数: |
62365 次 |
| 最近记录: |