SQL Anywhere 在执行 INSERT 语句时可执行完整性检查。例如,假设您尝试创建一个部门,但所提供的 DepartmentID 值已被使用:
INSERT INTO Departments ( DepartmentID, DepartmentName, DepartmentHeadID ) VALUES ( 200, 'Eastern Sales', 902 ); |
由于该表的主键不再唯一,因而 INSERT 语句将被拒绝。因为 DepartmentID 列是主键,所以不允许出现重复的值。
以下语句在 SalesOrders 表中插入一个新行,但错误地提供了在 Employees 表中不存在的 SalesRepresentative ID。
INSERT INTO SalesOrders ( ID, CustomerID, OrderDate, SalesRepresentative) VALUES ( 2700, 186, '2000-10-19', 284 ); |
根据 SalesOrders 表的 SalesRepresentative 列和 Employees 表的 EmployeeID 列,Employees 表和 SalesOrders 表之间存在一个一对多关系。只有在主表 (Employees) 中输入一个记录后,才能在外表 (SalesOrders) 中插入相应记录。
Employees 表的主键是雇员 ID 号。SalesRepresentative 表中的销售代表 ID 号是 Employees 表的外键,这意味着,SalesOrders 表中的每一销售代表号都必须与 Employees 表中某些雇员的雇员 ID 号匹配。
在您试图为销售代表 284 添加订单时,将收到类似于以下的错误消息:表 'SalesOrders' 中的外键 'FK_SalesRepresentative_EmployeeID' 没有主键值
在 Employees 表中没有具有该 ID 号的雇员。以此防止您在不具备有效销售代表 ID 的情况下插入订单。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |