用sqlserver设计关于城市公交查询系统的unique约束、check约束、default约束、not null约束以及触发器,并给出sql语句
时间: 2024-01-29 09:03:48 浏览: 76
下面是一个关于城市公交查询系统的表设计示例,包括了unique约束、check约束、default约束、not null约束以及触发器:
```sql
-- 创建 Vehicles 表
CREATE TABLE Vehicles (
vehicle_id INT PRIMARY KEY,
route_id INT NOT NULL,
vehicle_name VARCHAR(50) NOT NULL,
vehicle_type VARCHAR(50) DEFAULT 'Bus',
seat_capacity INT,
CONSTRAINT UC_vehicle_id UNIQUE (vehicle_id),
CONSTRAINT CK_vehicle_type CHECK (vehicle_type IN ('Bus', 'Tram', 'Subway')),
CONSTRAINT DF_seat_capacity DEFAULT 50,
CONSTRAINT CHK_seat_capacity CHECK (seat_capacity >= 0)
);
-- 创建触发器,当插入新记录时自动生成 vehicle_id
CREATE TRIGGER trg_generate_vehicle_id
ON Vehicles
INSTEAD OF INSERT
AS
BEGIN
-- 生成 vehicle_id
DECLARE @new_vehicle_id INT;
SELECT @new_vehicle_id = ISNULL(MAX(vehicle_id), 0) + 1 FROM Vehicles;
-- 插入新记录并设置 vehicle_id
INSERT INTO Vehicles (vehicle_id, route_id, vehicle_name, vehicle_type, seat_capacity)
SELECT @new_vehicle_id, route_id, vehicle_name, vehicle_type, seat_capacity
FROM inserted;
END;
```
以上示例中,假设我们有一个名为 "Vehicles" 的表,包含以下字段:
- vehicle_id INT (车辆编号,唯一约束)
- route_id INT (路线编号,非空约束)
- vehicle_name VARCHAR(50) (车辆名称,非空约束)
- vehicle_type VARCHAR(50) (车辆类型,取值范围为 'Bus', 'Tram', 'Subway',check约束)
- seat_capacity INT (座位容量,默认值为50,非负约束)
此外,我们还创建了一个触发器 "trg_generate_vehicle_id",用于在插入新记录时自动生成唯一的车辆编号。
你可以根据实际需求进行调整和修改表结构、约束和触发器。
阅读全文