Разработка логического и физического уровней модели данных с помощью CASE-средства. Практические навыки логического и физического проектирования реляционных данных с использованием средств программного пакета AllFusion ERwin Data Modeler, страница 15

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 18 марта 2014 г. 8:14:00 */

/* Послужной_список R/6 Сотрудники on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Послужной_список"

CHILD_OWNER="", CHILD_TABLE="Сотрудники"

P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",

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") */

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 18 марта 2014 г. 8:14:00 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Хобби ON Хобби FOR DELETE AS

/* ERwin Builtin 18 марта 2014 г. 8:14:00 */

/* DELETE trigger on Хобби */

BEGIN

DECLARE  @errno   int,

@errmsg  varchar(255)

/* ERwin Builtin 18 марта 2014 г. 8:14:00 */

/* Хобби R/19 Клиенты on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="0000f5da", PARENT_OWNER="", PARENT_TABLE="Хобби"

CHILD_OWNER="", CHILD_TABLE="Клиенты"

P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="R/19",

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 18 марта 2014 г. 8:14:00 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Хобби ON Хобби FOR UPDATE AS

/* ERwin Builtin 18 марта 2014 г. 8:14:00 */

/* UPDATE trigger on Хобби */

BEGIN

DECLARE  @NUMROWS int,

@nullcnt int,

@validcnt int,

@insКод_хобби integer,

@errno   int,

@errmsg  varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 18 марта 2014 г. 8:14:00 */

/* Хобби R/19 Клиенты on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00011070", PARENT_OWNER="", PARENT_TABLE="Хобби"

CHILD_OWNER="", CHILD_TABLE="Клиенты"

P2C_VERB_PHRASE="R/19", C2P_VERB_PHRASE="R/19",

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 18 марта 2014 г. 8:14:00 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go


Вывод: AllFusion ERwin Data Modeler - CASE-средство для проектирования и документирования баз данных, которое позволяет создавать, документировать и сопровождать базы данных, хранилища и витрины данных. Erwin позволяет экспортировать и импортировать структуру баз данных в (из) различные(-ых) СУБД (Access,SQL-Server и др.). Модели, созданные при проектировании в СУБД Access и SQL Server практически одинаковы за исключением некоторых различий (например различное отображение типов связей)