你能解释下面的sql查询中的fk_PerOrders是什么吗?

时间:2013-12-31 09:15:19

标签: mysql sql

以下查询来自此链接http://www.w3schools.com/sql/sql_foreignkey.asp

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

4 个答案:

答案 0 :(得分:0)

fk_PerOrders是约束的名称。

将来想要删除外键。您可以通过名称引用它来执行此操作:

ALTER TABLE orders DROP FOREIGN KEY fk_PerOrders;

答案 1 :(得分:0)

它只是约束的名称。见Using FOREIGN KEY Constraints

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

在您的代码中,fk_PerOrderssymbol

  

如果给出了CONSTRAINT符号子句,则使用符号值(如果使用)   必须在数据库中是唯一的。重复的符号将导致   错误类似于:ERROR 1022(2300):无法写入;重复密钥   表'#sql- 464_1'。如果没有给出该条款,或者没有给出符号   包含在CONSTRAINT关键字后面的约束名称   是自动创建的。

答案 2 :(得分:0)

fk_PerOrders是赋予约束的名称,它将由数据库客户端使用。 稍后您可以使用他的名字将其删除。

答案 3 :(得分:0)

你一定错过了这部分。

“FOREIGN KEY约束用于防止会破坏表之间链接的操作。

FOREIGN KEY约束还可以防止将无效数据插入到外键列中,因为它必须是它所指向的表中包含的值之一。“

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)