圖書館管理系統(數據庫的設計和腳本)

 ER diagram:

use master
go

if exists (select name from sysdatabases where name = 'library')
drop database library
go

create database library
	on
(
	name = 'library_data',
	filename = './library_data.mdf',
	size = 50mb,
	maxsize = 100mb,
	filegrowth = 10%
)
	log on
(
	name = 'library_log',
	filename = './library_log.ldf',
	size = 10mb,
	maxsize = 20mb,
	filegrowth = 2mb
)
go

use library
go


--創建讀者信息表
if exists (select name from sysobjects where name = '讀者表' and type = 'U')
drop table 讀者表
go

CREATE TABLE 讀者表 (
       讀者編號             CHAR(10) NOT NULL default '' primary key,
	  讀者類型             CHAR(10) NULL,
       讀者姓名		   varchar(10) default '',
	  讀者性別             char(1) default 'M',     /*'M'代表男,'F'代表女*/
       出生日期             datetime default getdate(),
       有效證件             char(18) default '',
	  證件號碼             varchar(18) default '',
       登記日期             datetime default getdate(),
       離開日期             datetime default '4000/01/01',
       借閱證號             CHAR(10) default '',
       備註                 CHAR(18) default '' null,
       操作員               CHAR(5) default '' NULL
)
go

--創建歸還信息表,當操作員錄入讀者歸還圖書或光碟時寫入信息
if exists (select name from sysobjects where name = '歸還表' and type = 'U')
drop table 歸還表
go

CREATE TABLE 歸還表 (
	  歸還序號             int identity(1,1) primary key,
       讀者編號             CHAR(10) default '' NOT NULL,
       圖書編號             CHAR(10) default '' NOT NULL,
       操作員               CHAR(5) default '' NULL,
       歸還日期             datetime default getdate() null
)
go


--創建角色表
if exists (select name from sysobjects where name = '角色表' and type = 'U')
drop table 角色表
go

CREATE TABLE 角色表 (
       角色編號             CHAR(2) default '' primary key NOT NULL,
       角色名稱             varchar(10) NOT NULL,
       備註                 varchar(20) NOT NULL
)
go

--創建權限表
if exists (select name from sysobjects where name = '權限表' and type = 'U')
drop table 權限表
go

CREATE TABLE 權限表 (
       權限編號             CHAR(2) default '' primary key NOT NULL,
       權限名稱             varchar(10) NOT NULL,
       備註                 varchar(20) NOT NULL
)
go


--創建'角色權限表',表明每個角色所擁有的不同權限
if exists (select name from sysobjects where name = '角色權限表' and type = 'U')
drop table 角色權限表
go

CREATE TABLE 角色權限表 (
	  角色權限序號         int identity(1,1) primary key not null,
       角色編號             CHAR(2) NOT NULL,
       權限編號             CHAR(2) NOT NULL
)
go


--創建教職工表, 存儲教職工信息
if exists (select name from sysobjects where name = '教職工表' and type = 'U')
drop table 教職工表
go

CREATE TABLE 教職工表 (
       工號                 CHAR(5) default '' primary key NOT NULL,
       姓名                 varchar(10) default '' NULL,
       性別                 CHAR(1) default 'M' NULL,
       出生日期             datetime default getdate(),
       有效證件             CHAR(18) default '',
       證件號碼             VARCHAR(18) default '',
       聯繫方式             VARCHAR(20) default '',
       院系                 VARCHAR(10) default '',
       備註                 VARCHAR(20) default ''
)
go


--創建借閱信息表
if exists (select name from sysobjects where name = '借閱表' and type = 'U')
drop table 借閱表
go 

CREATE TABLE 借閱表 (
	  借閱序號             int identity(1,1) primary key,
       讀者編號             CHAR(10) default '',
       圖書編號             CHAR(5) default '',
       操作員               CHAR(5) default '',
       借閱日期             datetime default getdate()
)
go


--創建借閱證信息表
if exists (select name from sysobjects where name = '借閱證表' and type = 'U')
drop table 借閱證表
go

CREATE TABLE 借閱證表 (
       借閱證號             CHAR(10) default '' primary key NOT NULL,
       借閱證密碼           varchar(10) default '000000' check (len(借閱證密碼) >= 6),
       辦理日期             datetime default getdate(),
       有效期至             datetime default '4000/01/01',
       備註                 varchar(20) default '',
       操作員               CHAR(5) default ''
)
go

--創建可借書數量表, 不同類型的讀者可以借不同數量的書或光碟
if exists (select name from sysobjects where name = '可借書數量表' and type = 'U')
drop table 可借書數量表
go

CREATE TABLE 可借書數量表 (
       讀者類型             CHAR(10) default '' NOT NULL,
       可借數量             int default 0 NOT NULL,
       備註                 CHAR(18) NOT NULL
)
go


ALTER TABLE 可借書數量表
       ADD PRIMARY KEY (讀者類型 ASC, 可借數量 ASC)
go


--創建其它信息表, 規定一些條件
if exists (select name from sysobjects where name = '其它信息表' and type = 'U')
drop table 其它信息表
go

CREATE TABLE 其它信息表 (
       過期日罰金額         float 	default 0 
)
go


--創建隨書光盤表
if exists (select name from sysobjects where name = '隨書光盤表' and type = 'U')
drop table 隨書光盤表
go

CREATE TABLE 隨書光盤表 (
       光盤編號             CHAR(5) default '' primary key NOT NULL,
       書架名稱             varchar(10) default '' NULL,
       圖書編號             CHAR(10) default '' NOT NULL,
       備註                 varchar(20) default '' NULL
)
go


--創建圖書信息表
if exists (select name from sysobjects where name = '圖書表' and type = 'U')
drop table 圖書表
go

CREATE TABLE 圖書表 (
       圖書編號             CHAR(10) default '' primary key NOT NULL,
       條形碼               CHAR(18) default '' NULL,
       書名                 varchar(10) default '' NULL,
       類型                 varchar(10) default '' NULL,
       作者                 varchar(10) default '' NULL,
       譯者                 varchar(10) default '' NULL,
       ISBN                 CHAR(18) default '' NULL,
       出版社               varchar(10) default '' NULL,
       價格                 float default 0 NULL,
       頁碼                 int default 0 NULL,
       書架名稱             varchar(10) default '' NULL,
       入庫日期             datetime default getdate(),
       註銷日期             datetime default '4000/01/01',
       備註                 varchar(20) default '' NULL
)
go


--創建圖書館員工表
if exists (select name from sysobjects where name = '圖書館員工表' and type = 'U')
drop table 圖書館員工表
go

CREATE TABLE 圖書館員工表 (
       員工編號             CHAR(5) default '' primary key NOT NULL,
       姓名                 varchar(10) default '' NULL,
       性別                 char(1) default 'M' NULL,
       職務                 CHAR(18) default '' NULL,
       出生日期             datetime default getdate(),
       有效證件             varchar(10) default '' NULL,
       證件號碼             varchar(20) default '' NULL,
       聯繫方式             varchar(10) default '' NULL,
       備註                 varchar(20) default '' null
)
go


--創建違章罰款信息表
if exists (select name from sysobjects where name = '違章罰款表' and type = 'U')
drop table 違章罰款表
go

CREATE TABLE 違章罰款表 (
       違章罰款序號         int IDENTITY(1,1) primary key not null,
       圖書編號             CHAR(5) default '',
       讀者編號             CHAR(10) default '',
       違章罰款日期         datetime default getdate(),
       應罰金額             float default 0,
	  交費日期             datetime default getdate(),
       實收金額             float default 0,
	  操作員               CHAR(5) default '' NOT NULL,
       備註                 CHAR(18) default '' NULL
)
go


--創建續借信息表
if exists (select name from sysobjects where name = '續借表' and type = 'U')
drop table 續借表
go

CREATE TABLE 續借表 (
	  續借序號             int identity(1,1) primary key not null,
       讀者編號             CHAR(10) default '',
       圖書編號             CHAR(10) default '',
       操作員               CHAR(5) default '',
       續借日期             datetime default getdate()
)
go


--創建學生信息表
if exists (select name from sysobjects where name = '學生表' and type = 'U')
drop table 學生表
go

CREATE TABLE 學生表 (
       學號                 CHAR(9) default '' primary key NOT NULL,
       姓名                 varchar(10) default '' NULL,
       性別                 CHAR(1) default 'M' NULL,
       出生日期             datetime default getdate(),
       有效證件             CHAR(18) default '',
       證件號碼             varchar(18) default '',
       聯繫方式             VARCHAR(10) default '',
       年級                 CHAR(4) default '2000',
       院系                 VARCHAR(10) default '' NULL,
       專業                 VARCHAR(10) default '' NULL,
       班級                 VARCHAR(10) default '' NULL,
       備註                 VARCHAR(20) default '' NULL
)
go


--創建用戶信息表
if exists (select name from sysobjects where name = '用戶表' and type = 'U')
drop table 用戶表
go

CREATE TABLE 用戶表 (
       用戶名               CHAR(18) default '' primary key NOT NULL,
       角色編號             CHAR(2) default '',
       用戶密碼             varchar(10) default '000000' check (len(用戶密碼) >= 6),
       用戶類型             varchar(10) default '' NULL,
       員工編號             CHAR(5) default '' NULL,
       備註                 CHAR(18) default '' NULL
)
go


--創建預約表,讀者預約圖書時使用
CREATE TABLE 預約表 (
	  預約序號             int identity(1,1) primary key not null,
       讀者編號             CHAR(10) default '' NULL,
       圖書編號             CHAR(10) default '' NULL,
       操作員               CHAR(5) default '' NULL,
       預約日期             datetime default getdate() NULL
)
go

create trigger tD_讀者表 on 讀者表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 讀者表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/20 預約表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/20", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_20", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.讀者編號 = deleted.讀者編號 and
        預約表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 讀者表 because 預約表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/17 續借表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/17", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_17", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.讀者編號 = deleted.讀者編號 and
        續借表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 讀者表 because 續借表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/14 歸還表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_14", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.讀者編號 = deleted.讀者編號 and
        歸還表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 讀者表 because 歸還表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/11 借閱表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/11", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_11", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.讀者編號 = deleted.讀者編號 and
        借閱表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 讀者表 because 借閱表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/8 違章罰款表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_8", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (
      select * from deleted,違章罰款表
      where
        /*  %JoinFKPK(違章罰款表,deleted," = "," and") */
        違章罰款表.讀者編號 = deleted.讀者編號 and
        違章罰款表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 讀者表 because 違章罰款表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 借閱證表 R/5 讀者表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="借閱證表"
    CHILD_OWNER="", CHILD_TABLE="讀者表"
    P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_5", FK_COLUMNS="借閱證號" */
    if exists (select * from deleted,借閱證表
      where
        /* %JoinFKPK(deleted,借閱證表," = "," and") */
        deleted.借閱證號 = 借閱證表.借閱證號 and
        not exists (
          select * from 讀者表
          where
            /* %JoinFKPK(讀者表,借閱證表," = "," and") */
            讀者表.借閱證號 = 借閱證表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 讀者表 because 借閱證表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_讀者表 on 讀者表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 讀者表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/20 預約表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/20", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_20", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.讀者編號 = deleted.讀者編號 and
        預約表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 讀者表 because 預約表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/17 續借表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/17", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_17", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.讀者編號 = deleted.讀者編號 and
        續借表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 讀者表 because 續借表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/14 歸還表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_14", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.讀者編號 = deleted.讀者編號 and
        歸還表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 讀者表 because 歸還表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/11 借閱表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/11", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_11", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.讀者編號 = deleted.讀者編號 and
        借閱表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 讀者表 because 借閱表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/8 違章罰款表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_8", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(讀者編號) or
    update(借閱證號)

  begin
    if exists (
      select * from deleted,違章罰款表
      where
        /*  %JoinFKPK(違章罰款表,deleted," = "," and") */
        違章罰款表.讀者編號 = deleted.讀者編號 and
        違章罰款表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 讀者表 because 違章罰款表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 借閱證表 R/5 讀者表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="借閱證表"
    CHILD_OWNER="", CHILD_TABLE="讀者表"
    P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_5", FK_COLUMNS="借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,借閱證表
        where
          /* %JoinFKPK(inserted,借閱證表) */
          inserted.借閱證號 = 借閱證表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 讀者表 because 借閱證表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_歸還表 on 歸還表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 歸還表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/15 歸還表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_15", FK_COLUMNS="操作員" */
    if exists (select * from deleted,圖書館員工表
      where
        /* %JoinFKPK(deleted,圖書館員工表," = "," and") */
        deleted.操作員 = 圖書館員工表.員工編號 and
        not exists (
          select * from 歸還表
          where
            /* %JoinFKPK(歸還表,圖書館員工表," = "," and") */
            歸還表.操作員 = 圖書館員工表.員工編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 歸還表 because 圖書館員工表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/14 歸還表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_14", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (select * from deleted,讀者表
      where
        /* %JoinFKPK(deleted,讀者表," = "," and") */
        deleted.讀者編號 = 讀者表.讀者編號 and
        deleted.借閱證號 = 讀者表.借閱證號 and
        not exists (
          select * from 歸還表
          where
            /* %JoinFKPK(歸還表,讀者表," = "," and") */
            歸還表.讀者編號 = 讀者表.讀者編號 and
            歸還表.借閱證號 = 讀者表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 歸還表 because 讀者表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/13 歸還表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_13", FK_COLUMNS="圖書編號" */
    if exists (select * from deleted,圖書表
      where
        /* %JoinFKPK(deleted,圖書表," = "," and") */
        deleted.圖書編號 = 圖書表.圖書編號 and
        not exists (
          select * from 歸還表
          where
            /* %JoinFKPK(歸還表,圖書表," = "," and") */
            歸還表.圖書編號 = 圖書表.圖書編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 歸還表 because 圖書表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_歸還表 on 歸還表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 歸還表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins歸還序號 int, 
           @ins圖書編號 CHAR(10), 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10), 
           @ins操作員 CHAR(5),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/15 歸還表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_15", FK_COLUMNS="操作員" */
  if
    /* %ChildFK(" or",update) */
    update(操作員)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書館員工表
        where
          /* %JoinFKPK(inserted,圖書館員工表) */
          inserted.操作員 = 圖書館員工表.員工編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 歸還表 because 圖書館員工表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/14 歸還表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_14", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,讀者表
        where
          /* %JoinFKPK(inserted,讀者表) */
          inserted.讀者編號 = 讀者表.讀者編號 and
          inserted.借閱證號 = 讀者表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 歸還表 because 讀者表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/13 歸還表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_13", FK_COLUMNS="圖書編號" */
  if
    /* %ChildFK(" or",update) */
    update(圖書編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書表
        where
          /* %JoinFKPK(inserted,圖書表) */
          inserted.圖書編號 = 圖書表.圖書編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 歸還表 because 圖書表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_角色表 on 角色表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 角色表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 角色表 R/2 角色權限表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="角色表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/2", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_2", FK_COLUMNS="角色編號" */
    if exists (
      select * from deleted,角色權限表
      where
        /*  %JoinFKPK(角色權限表,deleted," = "," and") */
        角色權限表.角色編號 = deleted.角色編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 角色表 because 角色權限表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_角色表 on 角色表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 角色表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins角色編號 CHAR(2),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 角色表 R/2 角色權限表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="角色表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/2", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_2", FK_COLUMNS="角色編號" */
  if
    /* %ParentPK(" or",update) */
    update(角色編號)
  begin
    if exists (
      select * from deleted,角色權限表
      where
        /*  %JoinFKPK(角色權限表,deleted," = "," and") */
        角色權限表.角色編號 = deleted.角色編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 角色表 because 角色權限表 exists.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_角色權限表 on 角色權限表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 角色權限表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 角色表 R/2 角色權限表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="角色表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/2", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_2", FK_COLUMNS="角色編號" */
    if exists (select * from deleted,角色表
      where
        /* %JoinFKPK(deleted,角色表," = "," and") */
        deleted.角色編號 = 角色表.角色編號 and
        not exists (
          select * from 角色權限表
          where
            /* %JoinFKPK(角色權限表,角色表," = "," and") */
            角色權限表.角色編號 = 角色表.角色編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 角色權限表 because 角色表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 權限表 R/1 角色權限表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/1", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_1", FK_COLUMNS="權限編號" */
    if exists (select * from deleted,權限表
      where
        /* %JoinFKPK(deleted,權限表," = "," and") */
        deleted.權限編號 = 權限表.權限編號 and
        not exists (
          select * from 角色權限表
          where
            /* %JoinFKPK(角色權限表,權限表," = "," and") */
            角色權限表.權限編號 = 權限表.權限編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 角色權限表 because 權限表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_角色權限表 on 角色權限表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 角色權限表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins角色權限序號 int, 
           @ins權限編號 CHAR(2), 
           @ins角色編號 CHAR(2),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 角色表 R/2 角色權限表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="角色表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/2", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_2", FK_COLUMNS="角色編號" */
  if
    /* %ChildFK(" or",update) */
    update(角色編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,角色表
        where
          /* %JoinFKPK(inserted,角色表) */
          inserted.角色編號 = 角色表.角色編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 角色權限表 because 角色表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 權限表 R/1 角色權限表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/1", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_1", FK_COLUMNS="權限編號" */
  if
    /* %ChildFK(" or",update) */
    update(權限編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,權限表
        where
          /* %JoinFKPK(inserted,權限表) */
          inserted.權限編號 = 權限表.權限編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 角色權限表 because 權限表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_借閱表 on 借閱表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 借閱表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/12 借閱表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_12", FK_COLUMNS="操作員" */
    if exists (select * from deleted,圖書館員工表
      where
        /* %JoinFKPK(deleted,圖書館員工表," = "," and") */
        deleted.操作員 = 圖書館員工表.員工編號 and
        not exists (
          select * from 借閱表
          where
            /* %JoinFKPK(借閱表,圖書館員工表," = "," and") */
            借閱表.操作員 = 圖書館員工表.員工編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 借閱表 because 圖書館員工表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/11 借閱表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/11", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_11", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (select * from deleted,讀者表
      where
        /* %JoinFKPK(deleted,讀者表," = "," and") */
        deleted.讀者編號 = 讀者表.讀者編號 and
        deleted.借閱證號 = 讀者表.借閱證號 and
        not exists (
          select * from 借閱表
          where
            /* %JoinFKPK(借閱表,讀者表," = "," and") */
            借閱表.讀者編號 = 讀者表.讀者編號 and
            借閱表.借閱證號 = 讀者表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 借閱表 because 讀者表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/6 借閱表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_6", FK_COLUMNS="圖書編號" */
    if exists (select * from deleted,圖書表
      where
        /* %JoinFKPK(deleted,圖書表," = "," and") */
        deleted.圖書編號 = 圖書表.圖書編號 and
        not exists (
          select * from 借閱表
          where
            /* %JoinFKPK(借閱表,圖書表," = "," and") */
            借閱表.圖書編號 = 圖書表.圖書編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 借閱表 because 圖書表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_借閱表 on 借閱表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 借閱表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins借閱序號 int, 
           @ins圖書編號 CHAR(10), 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10), 
           @ins操作員 CHAR(5),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/12 借閱表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_12", FK_COLUMNS="操作員" */
  if
    /* %ChildFK(" or",update) */
    update(操作員)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書館員工表
        where
          /* %JoinFKPK(inserted,圖書館員工表) */
          inserted.操作員 = 圖書館員工表.員工編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 借閱表 because 圖書館員工表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/11 借閱表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/11", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_11", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,讀者表
        where
          /* %JoinFKPK(inserted,讀者表) */
          inserted.讀者編號 = 讀者表.讀者編號 and
          inserted.借閱證號 = 讀者表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 借閱表 because 讀者表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/6 借閱表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_6", FK_COLUMNS="圖書編號" */
  if
    /* %ChildFK(" or",update) */
    update(圖書編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書表
        where
          /* %JoinFKPK(inserted,圖書表) */
          inserted.圖書編號 = 圖書表.圖書編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 借閱表 because 圖書表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_借閱證表 on 借閱證表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 借閱證表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 借閱證表 R/5 讀者表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="借閱證表"
    CHILD_OWNER="", CHILD_TABLE="讀者表"
    P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_5", FK_COLUMNS="借閱證號" */
    if exists (
      select * from deleted,讀者表
      where
        /*  %JoinFKPK(讀者表,deleted," = "," and") */
        讀者表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 借閱證表 because 讀者表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_借閱證表 on 借閱證表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 借閱證表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins借閱證號 CHAR(10),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 借閱證表 R/5 讀者表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="借閱證表"
    CHILD_OWNER="", CHILD_TABLE="讀者表"
    P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_5", FK_COLUMNS="借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(借閱證號)
  begin
    if exists (
      select * from deleted,讀者表
      where
        /*  %JoinFKPK(讀者表,deleted," = "," and") */
        讀者表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 借閱證表 because 讀者表 exists.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_權限表 on 權限表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 權限表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 權限表 R/3 用戶表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/3", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_3", FK_COLUMNS="權限編號" */
    if exists (
      select * from deleted,用戶表
      where
        /*  %JoinFKPK(用戶表,deleted," = "," and") */
        用戶表.權限編號 = deleted.權限編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 權限表 because 用戶表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 權限表 R/1 角色權限表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/1", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_1", FK_COLUMNS="權限編號" */
    if exists (
      select * from deleted,角色權限表
      where
        /*  %JoinFKPK(角色權限表,deleted," = "," and") */
        角色權限表.權限編號 = deleted.權限編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 權限表 because 角色權限表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_權限表 on 權限表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 權限表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins權限編號 CHAR(2),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 權限表 R/3 用戶表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/3", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_3", FK_COLUMNS="權限編號" */
  if
    /* %ParentPK(" or",update) */
    update(權限編號)
  begin
    if exists (
      select * from deleted,用戶表
      where
        /*  %JoinFKPK(用戶表,deleted," = "," and") */
        用戶表.權限編號 = deleted.權限編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 權限表 because 用戶表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 權限表 R/1 角色權限表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="角色權限表"
    P2C_VERB_PHRASE="R/1", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_1", FK_COLUMNS="權限編號" */
  if
    /* %ParentPK(" or",update) */
    update(權限編號)
  begin
    if exists (
      select * from deleted,角色權限表
      where
        /*  %JoinFKPK(角色權限表,deleted," = "," and") */
        角色權限表.權限編號 = deleted.權限編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 權限表 because 角色權限表 exists.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_隨書光盤表 on 隨書光盤表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 隨書光盤表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 違章罰款表 R/9 隨書光盤表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="違章罰款表"
    CHILD_OWNER="", CHILD_TABLE="隨書光盤表"
    P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_9", FK_COLUMNS="違章罰款序號""圖書編號""讀者編號""借閱證號" */
    if exists (select * from deleted,違章罰款表
      where
        /* %JoinFKPK(deleted,違章罰款表," = "," and") */
        deleted.違章罰款序號 = 違章罰款表.違章罰款序號 and
        deleted.圖書編號 = 違章罰款表.圖書編號 and
        deleted.讀者編號 = 違章罰款表.讀者編號 and
        deleted.借閱證號 = 違章罰款表.借閱證號 and
        not exists (
          select * from 隨書光盤表
          where
            /* %JoinFKPK(隨書光盤表,違章罰款表," = "," and") */
            隨書光盤表.違章罰款序號 = 違章罰款表.違章罰款序號 and
            隨書光盤表.圖書編號 = 違章罰款表.圖書編號 and
            隨書光盤表.讀者編號 = 違章罰款表.讀者編號 and
            隨書光盤表.借閱證號 = 違章罰款表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 隨書光盤表 because 違章罰款表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_隨書光盤表 on 隨書光盤表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 隨書光盤表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins光盤編號 CHAR(5), 
           @ins圖書編號 CHAR(10), 
           @ins違章罰款序號 int, 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 違章罰款表 R/9 隨書光盤表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="違章罰款表"
    CHILD_OWNER="", CHILD_TABLE="隨書光盤表"
    P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_9", FK_COLUMNS="違章罰款序號""圖書編號""讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(違章罰款序號) or
    update(圖書編號) or
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,違章罰款表
        where
          /* %JoinFKPK(inserted,違章罰款表) */
          inserted.違章罰款序號 = 違章罰款表.違章罰款序號 and
          inserted.圖書編號 = 違章罰款表.圖書編號 and
          inserted.讀者編號 = 違章罰款表.讀者編號 and
          inserted.借閱證號 = 違章罰款表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 隨書光盤表 because 違章罰款表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_圖書表 on 圖書表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 圖書表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/19 預約表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_19", FK_COLUMNS="圖書編號" */
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書表 because 預約表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/16 續借表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_16", FK_COLUMNS="圖書編號" */
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書表 because 續借表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/13 歸還表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_13", FK_COLUMNS="圖書編號" */
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書表 because 歸還表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/7 違章罰款表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_7", FK_COLUMNS="圖書編號" */
    if exists (
      select * from deleted,違章罰款表
      where
        /*  %JoinFKPK(違章罰款表,deleted," = "," and") */
        違章罰款表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書表 because 違章罰款表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/6 借閱表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_6", FK_COLUMNS="圖書編號" */
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書表 because 借閱表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_圖書表 on 圖書表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 圖書表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins圖書編號 CHAR(10),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/19 預約表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_19", FK_COLUMNS="圖書編號" */
  if
    /* %ParentPK(" or",update) */
    update(圖書編號)
  begin
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書表 because 預約表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/16 續借表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_16", FK_COLUMNS="圖書編號" */
  if
    /* %ParentPK(" or",update) */
    update(圖書編號)
  begin
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書表 because 續借表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/13 歸還表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_13", FK_COLUMNS="圖書編號" */
  if
    /* %ParentPK(" or",update) */
    update(圖書編號)
  begin
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書表 because 歸還表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/7 違章罰款表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_7", FK_COLUMNS="圖書編號" */
  if
    /* %ParentPK(" or",update) */
    update(圖書編號)
  begin
    if exists (
      select * from deleted,違章罰款表
      where
        /*  %JoinFKPK(違章罰款表,deleted," = "," and") */
        違章罰款表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書表 because 違章罰款表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/6 借閱表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_6", FK_COLUMNS="圖書編號" */
  if
    /* %ParentPK(" or",update) */
    update(圖書編號)
  begin
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.圖書編號 = deleted.圖書編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書表 because 借閱表 exists.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_圖書館員工表 on 圖書館員工表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 圖書館員工表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/21 預約表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/21", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_21", FK_COLUMNS="操作員" */
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書館員工表 because 預約表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/18 續借表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/18", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_18", FK_COLUMNS="操作員" */
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書館員工表 because 續借表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/15 歸還表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_15", FK_COLUMNS="操作員" */
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書館員工表 because 歸還表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/12 借閱表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_12", FK_COLUMNS="操作員" */
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書館員工表 because 借閱表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/4 用戶表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_4", FK_COLUMNS="員工編號" */
    if exists (
      select * from deleted,用戶表
      where
        /*  %JoinFKPK(用戶表,deleted," = "," and") */
        用戶表.員工編號 = deleted.員工編號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 圖書館員工表 because 用戶表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_圖書館員工表 on 圖書館員工表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 圖書館員工表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins員工編號 CHAR(5),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/21 預約表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/21", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_21", FK_COLUMNS="操作員" */
  if
    /* %ParentPK(" or",update) */
    update(員工編號)
  begin
    if exists (
      select * from deleted,預約表
      where
        /*  %JoinFKPK(預約表,deleted," = "," and") */
        預約表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書館員工表 because 預約表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/18 續借表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/18", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_18", FK_COLUMNS="操作員" */
  if
    /* %ParentPK(" or",update) */
    update(員工編號)
  begin
    if exists (
      select * from deleted,續借表
      where
        /*  %JoinFKPK(續借表,deleted," = "," and") */
        續借表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書館員工表 because 續借表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/15 歸還表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="歸還表"
    P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_15", FK_COLUMNS="操作員" */
  if
    /* %ParentPK(" or",update) */
    update(員工編號)
  begin
    if exists (
      select * from deleted,歸還表
      where
        /*  %JoinFKPK(歸還表,deleted," = "," and") */
        歸還表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書館員工表 because 歸還表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/12 借閱表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="借閱表"
    P2C_VERB_PHRASE="R/12", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_12", FK_COLUMNS="操作員" */
  if
    /* %ParentPK(" or",update) */
    update(員工編號)
  begin
    if exists (
      select * from deleted,借閱表
      where
        /*  %JoinFKPK(借閱表,deleted," = "," and") */
        借閱表.操作員 = deleted.員工編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書館員工表 because 借閱表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/4 用戶表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_4", FK_COLUMNS="員工編號" */
  if
    /* %ParentPK(" or",update) */
    update(員工編號)
  begin
    if exists (
      select * from deleted,用戶表
      where
        /*  %JoinFKPK(用戶表,deleted," = "," and") */
        用戶表.員工編號 = deleted.員工編號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 圖書館員工表 because 用戶表 exists.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_違章罰款表 on 違章罰款表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 違章罰款表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 違章罰款表 R/9 隨書光盤表 ON PARENT DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="違章罰款表"
    CHILD_OWNER="", CHILD_TABLE="隨書光盤表"
    P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_9", FK_COLUMNS="違章罰款序號""圖書編號""讀者編號""借閱證號" */
    if exists (
      select * from deleted,隨書光盤表
      where
        /*  %JoinFKPK(隨書光盤表,deleted," = "," and") */
        隨書光盤表.違章罰款序號 = deleted.違章罰款序號 and
        隨書光盤表.圖書編號 = deleted.圖書編號 and
        隨書光盤表.讀者編號 = deleted.讀者編號 and

        隨書光盤表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30001,
             @errmsg = 'Cannot DELETE 違章罰款表 because 隨書光盤表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/8 違章罰款表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_8", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (select * from deleted,讀者表
      where
        /* %JoinFKPK(deleted,讀者表," = "," and") */
        deleted.讀者編號 = 讀者表.讀者編號 and
        deleted.借閱證號 = 讀者表.借閱證號 and
        not exists (
          select * from 違章罰款表
          where
            /* %JoinFKPK(違章罰款表,讀者表," = "," and") */
            違章罰款表.讀者編號 = 讀者表.讀者編號 and
            違章罰款表.借閱證號 = 讀者表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 違章罰款表 because 讀者表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/7 違章罰款表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_7", FK_COLUMNS="圖書編號" */
    if exists (select * from deleted,圖書表
      where
        /* %JoinFKPK(deleted,圖書表," = "," and") */
        deleted.圖書編號 = 圖書表.圖書編號 and
        not exists (
          select * from 違章罰款表
          where
            /* %JoinFKPK(違章罰款表,圖書表," = "," and") */
            違章罰款表.圖書編號 = 圖書表.圖書編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 違章罰款表 because 圖書表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_違章罰款表 on 違章罰款表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 違章罰款表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins違章罰款序號 int, 
           @ins圖書編號 CHAR(10), 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 違章罰款表 R/9 隨書光盤表 ON PARENT UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="違章罰款表"
    CHILD_OWNER="", CHILD_TABLE="隨書光盤表"
    P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_9", FK_COLUMNS="違章罰款序號""圖書編號""讀者編號""借閱證號" */
  if
    /* %ParentPK(" or",update) */
    update(違章罰款序號) or
    update(圖書編號) or
    update(讀者編號) or
    update(借閱證號)
  begin
    if exists (
      select * from deleted,隨書光盤表
      where
        /*  %JoinFKPK(隨書光盤表,deleted," = "," and") */
        隨書光盤表.違章罰款序號 = deleted.違章罰款序號 and
        隨書光盤表.圖書編號 = deleted.圖書編號 and
        隨書光盤表.讀者編號 = deleted.讀者編號 and
        隨書光盤表.借閱證號 = deleted.借閱證號
    )
    begin
      select @errno  = 30005,
             @errmsg = 'Cannot UPDATE 違章罰款表 because 隨書光盤表 exists.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/8 違章罰款表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_8", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,讀者表
        where
          /* %JoinFKPK(inserted,讀者表) */
          inserted.讀者編號 = 讀者表.讀者編號 and
          inserted.借閱證號 = 讀者表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 違章罰款表 because 讀者表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/7 違章罰款表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="違章罰款表"
    P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_7", FK_COLUMNS="圖書編號" */
  if
    /* %ChildFK(" or",update) */
    update(圖書編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書表
        where
          /* %JoinFKPK(inserted,圖書表) */
          inserted.圖書編號 = 圖書表.圖書編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 違章罰款表 because 圖書表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_續借表 on 續借表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 續借表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/18 續借表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/18", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_18", FK_COLUMNS="操作員" */
    if exists (select * from deleted,圖書館員工表
      where
        /* %JoinFKPK(deleted,圖書館員工表," = "," and") */
        deleted.操作員 = 圖書館員工表.員工編號 and
        not exists (
          select * from 續借表
          where
            /* %JoinFKPK(續借表,圖書館員工表," = "," and") */
            續借表.操作員 = 圖書館員工表.員工編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 續借表 because 圖書館員工表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/17 續借表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/17", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_17", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (select * from deleted,讀者表
      where
        /* %JoinFKPK(deleted,讀者表," = "," and") */
        deleted.讀者編號 = 讀者表.讀者編號 and
        deleted.借閱證號 = 讀者表.借閱證號 and
        not exists (
          select * from 續借表
          where
            /* %JoinFKPK(續借表,讀者表," = "," and") */
            續借表.讀者編號 = 讀者表.讀者編號 and
            續借表.借閱證號 = 讀者表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 續借表 because 讀者表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/16 續借表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_16", FK_COLUMNS="圖書編號" */
    if exists (select * from deleted,圖書表
      where
        /* %JoinFKPK(deleted,圖書表," = "," and") */
        deleted.圖書編號 = 圖書表.圖書編號 and
        not exists (
          select * from 續借表
          where
            /* %JoinFKPK(續借表,圖書表," = "," and") */
            續借表.圖書編號 = 圖書表.圖書編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 續借表 because 圖書表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_續借表 on 續借表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 續借表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins續借序號 int, 
           @ins圖書編號 CHAR(10), 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10), 
           @ins操作員 CHAR(5),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/18 續借表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/18", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_18", FK_COLUMNS="操作員" */
  if
    /* %ChildFK(" or",update) */
    update(操作員)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書館員工表
        where
          /* %JoinFKPK(inserted,圖書館員工表) */
          inserted.操作員 = 圖書館員工表.員工編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 續借表 because 圖書館員工表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/17 續借表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/17", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_17", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,讀者表
        where
          /* %JoinFKPK(inserted,讀者表) */
          inserted.讀者編號 = 讀者表.讀者編號 and
          inserted.借閱證號 = 讀者表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 續借表 because 讀者表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/16 續借表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="續借表"
    P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_16", FK_COLUMNS="圖書編號" */
  if
    /* %ChildFK(" or",update) */
    update(圖書編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書表
        where
          /* %JoinFKPK(inserted,圖書表) */
          inserted.圖書編號 = 圖書表.圖書編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 續借表 because 圖書表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_用戶表 on 用戶表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 用戶表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/4 用戶表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_4", FK_COLUMNS="員工編號" */
    if exists (select * from deleted,圖書館員工表
      where
        /* %JoinFKPK(deleted,圖書館員工表," = "," and") */
        deleted.員工編號 = 圖書館員工表.員工編號 and
        not exists (
          select * from 用戶表
          where
            /* %JoinFKPK(用戶表,圖書館員工表," = "," and") */
            用戶表.員工編號 = 圖書館員工表.員工編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 用戶表 because 圖書館員工表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 權限表 R/3 用戶表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/3", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_3", FK_COLUMNS="權限編號" */
    if exists (select * from deleted,權限表
      where
        /* %JoinFKPK(deleted,權限表," = "," and") */
        deleted.權限編號 = 權限表.權限編號 and
        not exists (
          select * from 用戶表
          where
            /* %JoinFKPK(用戶表,權限表," = "," and") */
            用戶表.權限編號 = 權限表.權限編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 用戶表 because 權限表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_用戶表 on 用戶表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 用戶表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins用戶名 CHAR(18), 
           @ins權限編號 CHAR(2),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/4 用戶表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_4", FK_COLUMNS="員工編號" */
  if
    /* %ChildFK(" or",update) */
    update(員工編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書館員工表
        where
          /* %JoinFKPK(inserted,圖書館員工表) */
          inserted.員工編號 = 圖書館員工表.員工編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    select @nullcnt = count(*) from inserted where
      inserted.員工編號 is null
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 用戶表 because 圖書館員工表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 權限表 R/3 用戶表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="權限表"
    CHILD_OWNER="", CHILD_TABLE="用戶表"
    P2C_VERB_PHRASE="R/3", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_3", FK_COLUMNS="權限編號" */
  if
    /* %ChildFK(" or",update) */
    update(權限編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,權限表
        where
          /* %JoinFKPK(inserted,權限表) */
          inserted.權限編號 = 權限表.權限編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 用戶表 because 權限表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tD_預約表 on 預約表 for DELETE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* DELETE trigger on 預約表 */
begin
  declare  @errno   int,
           @errmsg  varchar(255)
    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書館員工表 R/21 預約表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/21", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_21", FK_COLUMNS="操作員" */
    if exists (select * from deleted,圖書館員工表
      where
        /* %JoinFKPK(deleted,圖書館員工表," = "," and") */
        deleted.操作員 = 圖書館員工表.員工編號 and
        not exists (
          select * from 預約表
          where
            /* %JoinFKPK(預約表,圖書館員工表," = "," and") */
            預約表.操作員 = 圖書館員工表.員工編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 預約表 because 圖書館員工表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 讀者表 R/20 預約表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/20", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_20", FK_COLUMNS="讀者編號""借閱證號" */
    if exists (select * from deleted,讀者表
      where
        /* %JoinFKPK(deleted,讀者表," = "," and") */
        deleted.讀者編號 = 讀者表.讀者編號 and
        deleted.借閱證號 = 讀者表.借閱證號 and
        not exists (
          select * from 預約表
          where
            /* %JoinFKPK(預約表,讀者表," = "," and") */
            預約表.讀者編號 = 讀者表.讀者編號 and
            預約表.借閱證號 = 讀者表.借閱證號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 預約表 because 讀者表 exists.'
      goto error
    end

    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    /* 圖書表 R/19 預約表 ON CHILD DELETE NO ACTION */
    /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_19", FK_COLUMNS="圖書編號" */
    if exists (select * from deleted,圖書表
      where
        /* %JoinFKPK(deleted,圖書表," = "," and") */
        deleted.圖書編號 = 圖書表.圖書編號 and
        not exists (
          select * from 預約表
          where
            /* %JoinFKPK(預約表,圖書表," = "," and") */
            預約表.圖書編號 = 圖書表.圖書編號
        )
    )
    begin
      select @errno  = 30010,
             @errmsg = 'Cannot DELETE last 預約表 because 圖書表 exists.'
      goto error
    end


    /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
    return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go

create trigger tU_預約表 on 預約表 for UPDATE as
/* ERwin Builtin Sun Nov 13 17:55:37 2005 */
/* UPDATE trigger on 預約表 */
begin
  declare  @numrows int,
           @nullcnt int,
           @validcnt int,
           @ins預約序號 int, 
           @ins圖書編號 CHAR(10), 
           @ins讀者編號 CHAR(10), 
           @ins借閱證號 CHAR(10), 
           @ins操作員 CHAR(5),
           @errno   int,
           @errmsg  varchar(255)

  select @numrows = @@rowcount
  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書館員工表 R/21 預約表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書館員工表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/21", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_21", FK_COLUMNS="操作員" */
  if
    /* %ChildFK(" or",update) */
    update(操作員)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書館員工表
        where
          /* %JoinFKPK(inserted,圖書館員工表) */
          inserted.操作員 = 圖書館員工表.員工編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 預約表 because 圖書館員工表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 讀者表 R/20 預約表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="讀者表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/20", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_20", FK_COLUMNS="讀者編號""借閱證號" */
  if
    /* %ChildFK(" or",update) */
    update(讀者編號) or
    update(借閱證號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,讀者表
        where
          /* %JoinFKPK(inserted,讀者表) */
          inserted.讀者編號 = 讀者表.讀者編號 and
          inserted.借閱證號 = 讀者表.借閱證號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 預約表 because 讀者表 does not exist.'
      goto error
    end
  end

  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  /* 圖書表 R/19 預約表 ON CHILD UPDATE NO ACTION */
  /* ERWIN_RELATION:PARENT_OWNER="", PARENT_TABLE="圖書表"
    CHILD_OWNER="", CHILD_TABLE="預約表"
    P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="", 
    FK_CONSTRAINT="R_19", FK_COLUMNS="圖書編號" */
  if
    /* %ChildFK(" or",update) */
    update(圖書編號)
  begin
    select @nullcnt = 0
    select @validcnt = count(*)
      from inserted,圖書表
        where
          /* %JoinFKPK(inserted,圖書表) */
          inserted.圖書編號 = 圖書表.圖書編號
    /* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
    
    if @validcnt + @nullcnt != @numrows
    begin
      select @errno  = 30007,
             @errmsg = 'Cannot UPDATE 預約表 because 圖書表 does not exist.'
      goto error
    end
  end


  /* ERwin Builtin Sun Nov 13 17:55:37 2005 */
  return
error:
    raiserror @errno @errmsg
    rollback transaction
end
go


發佈了31 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章