Initial commit
This commit is contained in:
37
Homework/Homework250417/Work1.sql
Normal file
37
Homework/Homework250417/Work1.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
Use Homework250417
|
||||
Go
|
||||
CREATE TABLE Employee(
|
||||
EmployeeID INT PRIMARY KEY,
|
||||
Name NVARCHAR(20),
|
||||
Age INT,
|
||||
Salary INT,
|
||||
);
|
||||
Go
|
||||
/* 删除员工表信息时,如果员工个数<5,不允许删除员工信息,
|
||||
记录下企图删除员工信息的行为 */
|
||||
CREATE TABLE DelEmployeeAttempt(
|
||||
AttemptID INT PRIMARY KEY IDENTITY(1,1),
|
||||
EmployeeID INT,
|
||||
AttemptTime DATETIME DEFAULT GETDATE(),
|
||||
);
|
||||
Go
|
||||
CREATE TRIGGER trg_DelEmployee
|
||||
ON Employee
|
||||
INSTEAD OF DELETE
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @EmployeeCount INT;
|
||||
SELECT @EmployeeCount = COUNT(*) FROM Employee;
|
||||
IF @EmployeeCount < 5
|
||||
BEGIN
|
||||
INSERT INTO DelEmployeeAttempt (EmployeeID)
|
||||
SELECT EmployeeID FROM DELETED;
|
||||
RAISERROR(N'少于5名员工,无法删除', 16, 1);
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
DELETE FROM Employee WHERE EmployeeID IN (SELECT EmployeeID FROM DELETED);
|
||||
PRINT(N'删除员工信息成功');
|
||||
END
|
||||
END;
|
||||
Go
|
||||
56
Homework/Homework250417/Work2.sql
Normal file
56
Homework/Homework250417/Work2.sql
Normal file
@@ -0,0 +1,56 @@
|
||||
USE Homework250417
|
||||
Go
|
||||
/* 某公司想举行一个小型的联谊会,关系Male记录注册的男宾信息,关系Female记录注册的女宾信息。
|
||||
建立一个触发器,将来宾的人数现在在50人以内。 */
|
||||
CREATE TABLE Male(
|
||||
ID INT PRIMARY KEY IDENTITY(1,1),
|
||||
Name NVARCHAR(20) NOT NULL,
|
||||
);
|
||||
CREATE TABLE Female(
|
||||
ID INT PRIMARY KEY IDENTITY(1,1),
|
||||
Name NVARCHAR(20) NOT NULL,
|
||||
);
|
||||
Go
|
||||
CREATE TRIGGER trg_LimitGuestCount_Male
|
||||
ON Male
|
||||
INSTEAD OF INSERT
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @MaleCount INT;
|
||||
DECLARE @FemaleCount INT;
|
||||
DECLARE @TotalCount INT;
|
||||
SELECT @MaleCount = COUNT(*) FROM Male;
|
||||
SELECT @FemaleCount = COUNT(*) FROM Female;
|
||||
SET @TotalCount = @MaleCount + @FemaleCount;
|
||||
IF @TotalCount >= 50
|
||||
RAISERROR(N'宾客人数已满,无法添加更多男宾', 16, 1)
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO Male (Name)
|
||||
SELECT Name FROM INSERTED;
|
||||
PRINT(N'添加男宾信息成功');
|
||||
END
|
||||
END;
|
||||
Go
|
||||
CREATE TRIGGER trg_LimitGuestCount_Female
|
||||
ON Female
|
||||
INSTEAD OF INSERT
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @MaleCount INT;
|
||||
DECLARE @FemaleCount INT;
|
||||
DECLARE @TotalCount INT;
|
||||
SELECT @MaleCount = COUNT(*) FROM Male;
|
||||
SELECT @FemaleCount = COUNT(*) FROM Female;
|
||||
SET @TotalCount = @MaleCount + @FemaleCount;
|
||||
IF @TotalCount >= 50
|
||||
RAISERROR(N'宾客人数已满,无法添加更多女宾', 16, 1)
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO Female (Name)
|
||||
SELECT Name FROM INSERTED;
|
||||
PRINT(N'添加女宾信息成功');
|
||||
END
|
||||
END;
|
||||
Go
|
||||
-- Test
|
||||
Reference in New Issue
Block a user