Читайте также: |
|
Создадим для таблицы authsmall триггер типа DELETE, который будет выводить информацию о попытках удаления и количестве удаляемых строк.
CREATE TRIGGER auth_de1 ON authsmall
FOR DELETE AS
PRINT 'Попытка удаления '+STR(@@ROWCOUNT)+' строк из таблицы authsmall'
PRINT 'Пользователь '+CURRENTUSER
IF CURRENTUSER!= 'dbo'
BEGIN
PRINT 'Удаление запрещено' ROLLBACK TRANSACTION
END ELSE
PRINT 'Удаление разрешено'
Созданный триггер будет выводить информацию о количестве строк, которое пытается удалить пользователь, и имя пользователя, выполнившего команду DELETE. Если пользователь не ' dbo', то удаление запрещается и выдается соответствующее предупреждение.
Выполним следующую команду:
DELETE FROM authsmall WHERE au_fname='Johnson'.
Или
DELETE FROM authsmall WHERE 2*2=5
Создание триггера, который будет разрешать изменение столбца au_id всем, кроме dbo:
CREATE TRIGGER auth_upd_1 ON authsmall FOR UPDATE AS SET NOCOUNT ON
PRINT 'Попытка изменения данных в таблице authsmall'
IF (COLUMNS_UPDATED() & 1)!=0
PRINT 'Изменение столбца au_id'
IF (COLUMNS_UPDATED() & 2)!=0
PRINT 'Изменение столбца au_fname'
IF (COLUMNS_UPDATED() & 4)!=0
PRINT 'Изменение столбца au_lname'
IF UPDATE(phone)
PRINT 'Изменение столбца phone'
IF (CURRENTUSER ='dbo') AND (COLUMNS_UPDATED() & 1)!=0)
BEGIN
PRINT 'Пользователь dbo не может изменять идентификационный номер автора'
ROLLBACK TRANSACTION
END
Попытаемся выполнить изменение телефона и имени автора:
UPDATE authsmall SET phone = '415 986-7020',
au_fname ='John' WHERE au_lname = 'Green'
Или
UPDATE authsmall SET phone = '913 843-7302',
au_id ='748-12-6859' WHERE au_lname = 'Smith'
Создадим триггер, который запретит удаление авторов, которые уже подписали контракт или проживают вне штата Калифорния:
CREATE TRIGGER auth_del ON authors
FOR DELETE AS
DECLARE @@Result int
SET @@Result = 1
IF EXISTS (SELECT * FROM deleted WHERE contract=l)
BEGIN
PRINT ('Попытка удаления автора с подписанным контрактом')
SET @@Result = 0
END
IF EXISTS (SELECT * FROM deleted WHERE state!= 'CA')
BEGIN
PRINT ('Попытка удаления автора, проживающего вне Калифорнии')
SET @@Result = 0
END
IF @@Result = 0
BEGIN
PRINT 'Удаление запрещено**' ROLLBACK TRANSACTION
END
В триггере пришлось ввести локальную переменную @@Result, которая играет роль флага неудачного выполнения удаления.
Выполним следующий запрос:
DELETE FROM authsmall
Будет получен следующий результат:
Попытка удаления автора с подписанным контрактом. Попытка удаления автора, проживающего вне Калифорнии. Удаление запрещено.
Или
DELETE FROM authsmall WHERE city = 'Vacaville'
В качестве примера рассмотрим создание триггера для таблицы auth2, которое создается с помощью следующей команды:
CREATE TRIGGER auth2_trg ON auth2
INSTEAD OF INSERT, UPDATE, DELETE AS
SELECT * FROM inserted
Выполним следующие запросы.
INSERT INTO auth2
VALUES ('123-45-6789', 'Lock', 'Mack')
Результат:
au_id au_lname au_fname
123-45-6789 Lock Mack
(1 row(s) affected)
Варианты лабораторных заданий
Литература
ВОДОРОСЛИ
Отдел Зеленые водоросли. 17 тыс. видов.
Зеленые водоросли — одноклеточные, колониальные, многоклеточные растения. Встречаются в пресных и соленых водоемах, в сырой почве, на коре деревьев, в симбиозе с грибами (лишайники). Окраску водорослям придает зеленый пигмент — хлорофилл. Питаются автотрофно, за счет фотосинтеза, в результате которого синтезируют крахмал.
Размножаются зеленые водоросли бесполым и половым путем. Бесполое размножение осуществляется при помощи спор и вегетативно — фрагментами слоевища. Половое размножение связано с образованием и последующим слиянием гамет. В результате образуется зигота (2n), дающая начало новому организму. В жизненном цикле преобладает гаметофит — гаплоидное поколение (n).
Представители. Одноклеточные: хламидомонада, хлорелла; составляют фитопланктон водоемов, служат пищей водным рачкам и рыбам.
Многоклеточные: улотрикс, спирогира, кладофора.
Отдел Бурые водоросли. 1,5 тыс. видов.
Бурые водоросли — в основном многоклеточные обитатели морского дна до глубины 50 м. Тело представляет собой слоевище, в котором различают стеблевую и листовую часть. Крепится к дну с помощью ризоидов.
Бурыми эти водоросли называют потому, что кроме хлорофилла они содержат бурые пигменты — фукоксантины и оранжевые — каротиноиды. Питаются автотрофно за счет фотосинтеза. Продуктами фотосинтеза являются сахароспирты.
В цикле развития преобладает споровое поколение — спорофит (2п) — взрослое растение. В спорангиях на спорофите в процессе мейоза образуются споры (п), из которых развивается половое поколение — гаметофит (п). На нем в антеридиях образуются сперматозоиды, а в архегониях — яйцеклетки. После оплодотворения из зиготы развивается спорофит (2п).
Представители: фукус, саргасса, ламинария (морская капуста).
Отдел Красные водоросли, или Багрянки. 6 тыс. видов.
Красные водоросли — многоклеточные организмы, живущие в морях на значительной глубине (100 м и глубже). Они содержат красный пигмент фикоэритрин и синий фикоциан, придающие водорослям характерную окраску. Продуктом фотосинтеза является багрянковый крахмал. Оболочки клеток некоторых видов могут минерализоваться солями кальция и магния. Размножаются красные водоросли бесполым и половым путем. В жизненном цикле преобладает бесполое споровое поколение. Бесполое размножение осуществляется при помощи спор и вегетативно. Образующиеся в спорангиях споры гаплоидны (п). При половом размножении женские половые клетки остаются на водоросли, а мужские клетки пассивно переносятся к ним с током воды. Жгутиковые стадии в цикле развития отсутствуют. После оплодотворения из зиготы развивается новая особь.
Представители: порфира, кораллина, филлофора.
Значение водорослей очень велико. Они вместе с коралловыми полипами участвуют в формировании океанических островов, обогащают воду кислородом, образуют на дне морей обширные заросли, служащие прибежищем для морских обитателей. В промышленности из водорослей получают соли калия, иод, альгиновую кислоту. Из бурых водорослей извлекают агар-агар, который используют для приготовления желе и мармелада. Многие водоросли используются в медицине.
Дата добавления: 2014-12-19; просмотров: 140 | Поможем написать вашу работу | Нарушение авторских прав |