Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabSQL3(6-11)ЯрославцеваСоловьёв.doc
Скачиваний:
50
Добавлен:
03.06.2014
Размер:
1.52 Mб
Скачать

Упражнение 4 - Настройка параметров блокировки

  1. Открываем файл Lock2.sql. Смотрим содержимое файла. Выполняем запрос.

Рис. 8

  1. Открываем файл LockList.sql и выполняем запрос.

В столбце request_stetus появилась запись WAIT, указывающая на ожидание вторым запросом предоставления блокировки, прежде чем будет продолжено его выполнение.

SELECT resource_type, request_mode,request_type, request_status, request_session_id

FROM sys.dm_tran_locks

Рис. 9

  1. Установим таймаут блокировки. Добавим следующую команду перед командой BEGIN TRANSACTION :

SET lock_timeout 5000

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

SET lock_timeout 5000

BEGIN TRANSACTION

SELECT * FROM Person.Contact WHERE ContactID = 10

UPDATE Person.Contact SET FirstName = 'Frances' WHERE ContactID = 6

-- For the purpose of the exercise, COMMIT TRANSACTION or ROLLBACK TRANSACTION are not used.

SELECT @@spid AS 'SPID'

-- Use the SPID to identify the connection when using sp_lock.

-- ROLLBACK TRANSACTION

Рис. 10. Таймаут блокировки

Вывод: В ходе лабораторной работы мы получили представление о транзакциях и блокировках. Научились их применять в запросах, выполнять откат транзакций и просматривать сведения о блокировках через Монитор активности . Также научились настраивать параметры блокировки на примере установки таймаута блокировки.

Часть 3-11. Создание триггеров

Цель работы: Научиться создавать триггеры. В этой работе применяется база данных

Упражнение 1 - Создание новой таблицы

Написать и выполнить следующую команду:

USE [AdventureWorks]

GO

CREATE TABLE [HumanResources].[JobCandidateHistory](

[JobCandidateID] [int] NOT NULL UNIQUE,

[Resume] [xml] NULL,

[Rating] [int] NOT NULL CONSTRAINT [DF_JobCandidateHistory_Rating]

Default (5),

[RejectedDate] [datetime] NOT NULL,

[ContactID] [int] NULL,

CONSTRAINT [FK_JobCandidateHistory_Contact_ContactID]

FOREIGN KEY(ContactID) REFERENCES [Person].[Contact] (ContactID),

CONSTRAINT [CK_JobCandidateHistory_Rating]

CHECK ([Rating]>=0 AND [Rating]<=10)

) ON [PRIMARY]

Рис. 1. Выполнение запроса

Упражнение 2 - Создание триггера для таблицы

Создать триггер для таблицы JobCandidateсхемыHumanResources. Создадём триггерdJobCandidate. Триггер должен вставлять данные в таблицуJobCandidateHistoryпосле выполнения удаления данных из таблицыJobCandidate. Триггер копирует сведения о кандидате, если их кто-нибудь удалит. Необходимо копировать столбцыJobCandidateIDиResume. В полеRejectedDateнадо записать текущую дату с помощью функцииGetDate(). В столбцеRatingследует оставить значение по умолчанию, а столбцуContactIDприсвоить значениеNULL.

CREATE TRIGGER dJobCandidate ON HumanResources.JobCandidate

AFTER DELETE

AS

BEGIN

SET NOCOUNT ON;

INSERT INTO

[HumanResources].[JobCandidateHistory] (JobCandidateID, Resume,

RejectedDate)

SELECT

JobCandidateID, Resume ,getdate()

FROM

deleted

END;

Рис. 2