数据完整性约束(SQL Server)
数据完整性是指数据库中数据的准确性和一致性,保证数据库中数据满足特定的业务规则。在SQL Server中,数据完整性通过以下方式实现:
- 实体完整性:保证每行数据都是唯一的。
- 域完整性:保证每列数据都是有效的。
- 引用完整性:保证外键值有效并与相应的主键值相关联。
- 用户定义的完整性:自定义业务规则。
以下是实现数据完整性的一些SQL Server代码示例:
- 创建表时添加实体完整性约束(主键):
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email NVARCHAR(100)
);
- 创建表时添加域完整性约束(CHECK约束):
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email NVARCHAR(100),
CONSTRAINT CK_Employees_Email CHECK (Email LIKE '%@%')
);
- 创建表后添加外键约束:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
EmployeeID INT,
OrderDate DATE
);
ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Employees
FOREIGN KEY (EmployeeID)
REFERENCES Employees (EmployeeID);
- 创建表后添加用户定义的完整性(触发器):
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName NVARCHAR(100),
Price DECIMAL
);
CREATE TRIGGER TR_Products_CheckPrice
ON Products
INSTEAD OF INSERT
AS
BEGIN
IF EXISTS (SELECT 1 FROM inserted WHERE Price < 0)
BEGIN
RAISERROR ('Price cannot be negative.', 16, 1)
ROLLBACK TRANSACTION
END
ELSE
BEGIN
INSERT INTO Products (ProductID, ProductName, Price)
SELECT ProductID, ProductName, Price FROM inserted
END
END
这些示例展示了如何在创建表时或之后使用约束、触发器来实现数据完整性。
评论已关闭