我正在使用Oracle 10g。我正在将新列deptId添加到我的UserList表中,其中我使用deptId列作为外键引用其他表Column Departments.DepartmentId
将外键添加为约束与第一个查询
之间是否存在差异查询1
ALTER TABLE UserList
ADD FOREIGN KEY (DeptId)
REFERENCES Departments(DepartmentId)
QUERY2
ALTER TABLE UserList
ADD CONSTRAINT fk_DeptId FOREIGN KEY (DeptId)
REFERENCES Departments(DepartmentId)
答案 0 :(得分:4)
第二种语法允许您命名约束。第一个没有。
答案 1 :(得分:4)
除了使用可选的“CONSTRAINT”和约束名称子句外,没有区别。
有两种约束定义:内联和外联。前者作为列定义的一部分在列上运行,因此不需要命名DeptID列。后者是表定义的一部分,因此确实如此。
你的两个例子都是不符合约束的,但你没有在前一种情况下命名约束,这是一种不好的做法:
http://docs.oracle.com/cd/E18283_01/server.112/e17118/clauses002.htm#g1053592
答案 2 :(得分:-2)
ALTER TABLE [dbo].[UserList] WITH NOCHECK ADD CONSTRAINT [fk_DeptId] FOREIGN KEY([DeptId]) REFERENCES [dbo].[Departments] ([DepartmentId])
不,两个查询都没有区别。但是您可以命名外键约束名称。您可以使用上述查询。