簡體   English   中英

將列添加為外鍵和約束之間有什么區別

[英]What is the Difference between adding Column as Foreign Key and as a Constraint

我正在使用Oracle 10g。 我正在將新列deptId添加到我的UserList表中,在這里我將deptId列用作引用其他表列Departments.DepartmentId的外鍵

將外鍵添加為約束和首次查詢之間是否有區別

查詢1

ALTER TABLE UserList
ADD FOREIGN KEY (DeptId)
REFERENCES Departments(DepartmentId)    

查詢2

ALTER TABLE UserList
ADD CONSTRAINT  fk_DeptId FOREIGN KEY (DeptId)
REFERENCES Departments(DepartmentId)

第二種語法允許您命名約束。 第一個沒有。

除了使用可選的“ CONSTRAINT”和約束名稱子句外,沒有任何區別。

有兩種約束定義:內聯和外聯。 前者在列上作為列定義的一部分進行操作,因此不需要命名DeptID列。 后者是表定義的一部分,因此也可以。

您的兩個示例都不符合約束條件,但是在前一種情況下,您沒有命名約束條件,這是一個不好的做法:

http://docs.oracle.com/cd/E18283_01/server.112/e17118/clauses002.htm#g1053592

ALTER TABLE [dbo].[UserList]  WITH NOCHECK ADD  CONSTRAINT [fk_DeptId] FOREIGN KEY([DeptId])
REFERENCES [dbo].[Departments] ([DepartmentId])

不,這兩個查詢都沒有區別,但是您要命名外鍵約束名稱。 您可以使用上面的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM