1. 程式人生 > >圖書館管理系統(資料庫的設計和指令碼)

圖書館管理系統(資料庫的設計和指令碼)

 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_