⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 严琼.sql

📁 图书馆有时会对某图书的复本量进行更新
💻 SQL
字号:
--   【应用案例】图书馆有时会对某图书的复本量进行更新,如增购某图书
-- 复本,或因各种原因导致某图书丢失部分复本。复本量的更改直接导致库
-- 存量的改变,但为了不因误操作破坏数据完整性,我们不能对库存量直接
-- 修改,可以通过触发器,监测复本量的改变,自动修改库存量,这就可以
-- 用到对选定列的更新进行监测的方法。

-- =============================================
-- Create trigger basic template(After trigger)
-- =============================================
IF EXISTS (SELECT name 
	   FROM   sysobjects 
	   WHERE  name = N'book_message' 
	   AND 	  type = 'TR')
    DROP TRIGGER book_message
GO

CREATE TRIGGER book_message
ON BOOK FOR UPDATE
AS
IF UPDATE(复本量)
BEGIN
     DECLARE @ISBN ISBN
     DECLARE @orignal_FBL int,@orignal_KCL int,
             @cur_JYL int, @aim_FBL int
     SELECT @orignal_FBL=复本量,
      	    @orignal_KCL=库存量,
            @ISBN=ISBN
     FROM DELETED
     SELECT @aim_FBL=复本量
     FROM INSERTED
     IF @aim_FBL>=(@orignal_FBL-@orignal_KCL)
        BEGIN
            UPDATE BOOK 
            SET 库存量=@orignal_KCL+(@aim_FBL-@orignal_FBL)
            WHERE ISBN=@ISBN
        END
     ELSE 
        BEGIN 
           RAISERROR('对复本量的更新违反了用户定义数据完整性',16,10)
           ROLLBACK TRANSACTION 
        END
END
GO







--在XS表上设计触发器,使得毕业时未还完书的学生不得注销借书证
--(即:如果学生借阅量>0,不得删除该学生信息)
-- =============================================
-- Create trigger basic template(After trigger)
-- =============================================
IF EXISTS (SELECT name 
	   FROM   sysobjects 
	   WHERE  name = N'Student_message' 
	   AND 	  type = 'TR')
    DROP TRIGGER Student_message
GO

CREATE TRIGGER Student_message
ON XS
FOR DELETE 
AS 
BEGIN
    DECLARE @借书量 int
    DECLARE stu_cursor CURSOR
    FAST_FORWARD READ_ONLY
    FOR     
            SELECT 借书量
            FROM DELETED
    OPEN stu_cursor
    FETCH NEXT FROM stu_cursor 
    INTO @借书量
    WHILE @@FETCH_STATUS = 0
    BEGIN
         IF  @借书量>0
         BEGIN
                RAISERROR ('该同学还存在借阅记录,不能注销借书证!', 16, 10)
                ROLLBACK TRANSACTION
                RETURN
         END
                FETCH NEXT FROM stu_cursor 
                INTO @借书量
         END
    CLOSE stu_cursor
    DEALLOCATE stu_cursor
END
GO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -