能否给出sql违反参照完整性和实体完整性约束和违反自定义完整性约束的具体实例
时间: 2024-10-08 18:24:21 浏览: 37
在SQL中,有三种主要类型的完整性约束,包括参照完整性和实体完整性,以及用户自定义完整性(也称为业务规则约束)。下面是它们的具体实例:
1. **参照完整性** (Foreign Key Constraints):
- 当你在一张表(称为子表)中引用另一张表(称为主表)的键作为外键时,如果试图插入一个不存在于主表中的值到子表的关键字段,就会违反参照完整性。例如:
```
CREATE TABLE Orders (
OrderID int PRIMARY KEY,
CustomerID int,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
INSERT INTO Orders (OrderID, CustomerID) VALUES (1, 500); -- 这会违反,因为Customers表中没有ID为500的记录
```
2. **实体完整性** (Primary Key Constraints or Unique Constraints):
- 如果定义了一个列为主键,不允许包含NULL值并且所有值都必须唯一。比如:
```
CREATE TABLE Employees (
EmployeeID int PRIMARY KEY,
FirstName varchar(50),
LastName varchar(50)
);
INSERT INTO Employees (EmployeeID, FirstName, LastName) VALUES (null, 'John', 'Doe'); -- 违反,因为EmployeeID不允许为NULL
```
3. **用户自定义完整性** (Check Constraints or Triggers):
- 这些约束由数据库管理员或应用开发者定义,可以根据特定业务规则设置。例如:
```
CREATE TABLE Orders (
OrderID int PRIMARY KEY,
TotalAmount decimal(10, 2),
CHECK (TotalAmount >= 0) -- 自定义规则,总价不能为负数
);
INSERT INTO Orders (OrderID, TotalAmount) VALUES (1, -100); -- 违反,因为TotalAmount为负数
```
阅读全文