Loading...
본문 바로가기
👥
총 방문자
📖
0개 이상
총 포스팅
🧑
오늘 방문자 수
📅
0일째
블로그 운영

여러분의 방문을 환영해요! 🎉

다양한 개발 지식을 쉽고 재미있게 알려드리는 블로그가 될게요. 함께 성장해요! 😊

CS/database

[database] SQL Triggers

by 꽁이꽁설꽁돌 2025. 6. 23.
728x90
반응형

 

create trigger salary_nodecrease
on instructor
after update
as
begin
    set nocount on;

    if exists (
        select 1
        from inserted i
        inner join deleted d on i.instructor_id = d.instructor_id
        where i.salary < d.salary
    )
    begin
        declare @instructor_id varchar(5);

        select top 1 @instructor_id = i.instructor_id
        from inserted i
        inner join deleted d on i.instructor_id = d.instructor_id
        where i.salary < d.salary;
        raiserror('Salary decrease not allowed for instructors %s', 16, 1, @instructor_id);
        rollback transaction;
        return;
    end
end


---이 트리거는 **instructor 테이블의 salary(급여) 필드를 감시하여 
---급여가 줄어드는(update로 인한 감소) 것을 차단하는 역할을 합니다.

 

CREATE TRIGGER check_classroom_capacity
ON classroom
INSTEAD OF INSERT
AS
BEGIN
  SET NOCOUNT ON;

  -- 용량 초과 시 오류 발생 및 롤백
  IF EXISTS (SELECT 1 FROM inserted WHERE capacity > 200)
  BEGIN
    RAISERROR('classroom capacity cannot be more than 200', 16, 1);
    ROLLBACK TRANSACTION;
    RETURN;
  END;

  -- 용량 조건을 통과한 경우에만 삽입
  INSERT INTO classroom(building, room_number, capacity)
  SELECT building, room_number, capacity
  FROM inserted
  WHERE capacity <= 200;
END;

 

반응형

'CS > database' 카테고리의 다른 글

[database] SQL Stored Procedures  (0) 2025.06.23
[database] SQL CTE  (0) 2025.06.23
[database] SQL window functions  (0) 2025.06.22
[database] SQL views  (0) 2025.06.22
[database] SQL index  (1) 2025.06.21