Tải bản đầy đủ (.ppt) (30 trang)

Bài giảng điện tử môn tin học: Cursor ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (343.48 KB, 30 trang )

1
CURSOR
13
13
2
1. Khái niệm:
1. Khái niệm:
Cursor
Cursor
là một đối tượng của CSDL mà nó hỗ trợ cho
là một đối tượng của CSDL mà nó hỗ trợ cho
phép truy xuất và thao tác dữ liệu trong một tập kết
phép truy xuất và thao tác dữ liệu trong một tập kết
quả. Sau khi
quả. Sau khi
cursor
cursor
được định vị trên một dòng, các
được định vị trên một dòng, các
hoạt động có thể thực hiện trên dòng đó.
hoạt động có thể thực hiện trên dòng đó.
Dùng Cursor để:
Dùng Cursor để:


Định vị một dòng đặc biệt trong tập kết quả.
Định vị một dòng đặc biệt trong tập kết quả.


Truy xuất một hoặc khối dòng bắt đầu từ vị trí
Truy xuất một hoặc khối dòng bắt đầu từ vị trí


cursor trong tập kết quả.
cursor trong tập kết quả.


Cung cấp thao tác hiệu chỉnh dữ liệu cho các dòng tại
Cung cấp thao tác hiệu chỉnh dữ liệu cho các dòng tại
vị trí của
vị trí của
Cursor
Cursor
trong tập kết quả.
trong tập kết quả.


Cung cấp các mức độ khác nhau của tính tường
Cung cấp các mức độ khác nhau của tính tường
minh trong sự thay đổi đước tạo bởi những người
minh trong sự thay đổi đước tạo bởi những người
dùng khác đến tập kết quả.
dùng khác đến tập kết quả.
3
Khi sử dụng cursor trong SQL Server:
Khi sử dụng cursor trong SQL Server:


Cursor cần phải khai báo và các thuộc tính của
Cursor cần phải khai báo và các thuộc tính của
nó cũng cần được xác định
nó cũng cần được xác định



Mở
Mở
cursor
cursor
.
.


Phải lấy (
Phải lấy (
fetch
fetch
) các dòng cần thiết từ
) các dòng cần thiết từ
cursor
cursor
.
.


Dữ liệu trong dòng hiện hành có thể được hiệu
Dữ liệu trong dòng hiện hành có thể được hiệu
chỉnh nếu cần thiết.
chỉnh nếu cần thiết.


Tạm thời không dùng cursor thì phải đóng cursor
Tạm thời không dùng cursor thì phải đóng cursor
lại.

lại.


Cursor cần phải được giải phóng khi không cần
Cursor cần phải được giải phóng khi không cần
dùng nữa.
dùng nữa.
4
2. Phân Loại Cursor:
2. Phân Loại Cursor:
a. Static Cursor:
a. Static Cursor:


Tập kết quả của con trỏ loại Static được xây dựng
Tập kết quả của con trỏ loại Static được xây dựng
trong
trong
tempdb
tempdb
khi con trỏ được mở.
khi con trỏ được mở.


Con trỏ không phản ánh được bất kỳ sự thay đổi
Con trỏ không phản ánh được bất kỳ sự thay đổi
nào trong database ngay cả khi những dòng dữ
nào trong database ngay cả khi những dòng dữ
liệu có thay đổi.
liệu có thay đổi.



Tất cả t
Tất cả t
hao tác
hao tác
Insert
Insert
,
,
Update
Update
,
,
Delete
Delete
đều không
đều không
có tác dụng khi dùng
có tác dụng khi dùng
static cursor
static cursor
5
b. Keyset-driven Cursor:
b. Keyset-driven Cursor:




Thành viên và thứ tự của các dòng trong một

Thành viên và thứ tự của các dòng trong một
keyset-driven cursor
keyset-driven cursor
là cố định khi cursor được
là cố định khi cursor được
mở. Con trỏ được điều khiển bởi một tập giá trị
mở. Con trỏ được điều khiển bởi một tập giá trị
nhận dạng gọi là
nhận dạng gọi là
Keyset
Keyset
. Keyset được xây dựng
. Keyset được xây dựng
trong
trong
Tempdb
Tempdb
khi con trỏ được mở.
khi con trỏ được mở.


Cho phép hiệu chỉnh (
Cho phép hiệu chỉnh (
update
update
,
,
delete
delete
) dữ liệu trên

) dữ liệu trên
cột không là keyset (bởi chủ cursor hoặc từ user
cột không là keyset (bởi chủ cursor hoặc từ user
khác) khi user duyệt thông qua con trỏ.
khác) khi user duyệt thông qua con trỏ.


Inserts made by other users are not visible.
Inserts made by other users are not visible.
6
c. Dynamic Cursor:
c. Dynamic Cursor:




Cursor
Cursor
phản ánh được toàn bộ sự thay đổi của
phản ánh được toàn bộ sự thay đổi của
các dòng dữ liệu trong tập kết quả khi duyệt
các dòng dữ liệu trong tập kết quả khi duyệt
Cursor
Cursor




Giá trị dữ liệu, thứ tự, và thành viên của các
Giá trị dữ liệu, thứ tự, và thành viên của các

dòng trong tập kết quả có thể thay đổi ứng với
dòng trong tập kết quả có thể thay đổi ứng với
mỗi lần duyệt con trỏ.
mỗi lần duyệt con trỏ.


Tất cả các lệnh
Tất cả các lệnh
Insert, Update, Delete
Insert, Update, Delete
của các
của các
user đều hữu hiệu thông qua con trỏ.
user đều hữu hiệu thông qua con trỏ.
d. Fast Forward Cursor:
d. Fast Forward Cursor:
Chỉ duyệt con trỏ theo một chiều từ
Chỉ duyệt con trỏ theo một chiều từ
First
First


Last
Last
7

13.2 Làm việc với T-SQL server cursors
13.2 Làm việc với T-SQL server cursors
Khai báo cursor
Khai báo cursor

Bằng câu lệnh declare ở sau từ khóa
Bằng câu lệnh declare ở sau từ khóa
AS trong stored procedures hoặc functions
AS trong stored procedures hoặc functions
DECLARE
DECLARE
cursor_name
cursor_name
CURSOR
CURSOR


[LOCAL | GLOBAL]
[LOCAL | GLOBAL]


[FORWARD_ONLY | SCROLL]
[FORWARD_ONLY | SCROLL]


[STATIC | KEYSET | DYNAMIC |FAST_FORWARD]
[STATIC | KEYSET | DYNAMIC |FAST_FORWARD]


[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
FOR
FOR



select_statement
select_statement


[
[
FOR UPDATE
FOR UPDATE
[OF column_name [,…n]]]
[OF column_name [,…n]]]
8
Ghi chú:
Ghi chú:


Select_statement:
Select_statement:
Là câu lệnh truy vấn để định
Là câu lệnh truy vấn để định
nghĩa tập kết quả của cursor. Từ khóa
nghĩa tập kết quả của cursor. Từ khóa
COMPUTE
COMPUTE
,
,
COMPUTE BY
COMPUTE BY
, FOR BROWSE,
, FOR BROWSE,
and

and
INTO
INTO
không cho phép trong select_statement
không cho phép trong select_statement


READ ONLY
READ ONLY
không cho phép Update trong
không cho phép Update trong
cursor này.
cursor này.


UPDATE
UPDATE


[OF
[OF
column_name
column_name
[,…n]]:
[,…n]]:
Quy định
Quy định
cột cho phép được
cột cho phép được
update

update
khi dùng cursor. Nếu
khi dùng cursor. Nếu
OF column_name
OF column_name
[,n…] được chỉ định rõ ràng thì
[,n…] được chỉ định rõ ràng thì
chỉ có các cột được chỉ định mới được cho phép
chỉ có các cột được chỉ định mới được cho phép
hiệu chỉnh, nếu không có column list,
hiệu chỉnh, nếu không có column list,
all columns
all columns
có thể update.
có thể update.
9

Mở cursor:
Mở cursor:
Cursor được open sau khai báo
Cursor được open sau khai báo
OPEN
OPEN


{cursor_name}
{cursor_name}

Lấy mẫu tin hoặc điều hướng cursor (FETCH)
Lấy mẫu tin hoặc điều hướng cursor (FETCH)

FETCH
FETCH
[
[
[
[
NEXT | PRIOR | FIRST | LAST |
NEXT | PRIOR | FIRST | LAST |
ABSOLUTE
ABSOLUTE
n
n
| REALTIVE
| REALTIVE
n ]
n ]
]
]
FROM
FROM
cursor_name
cursor_name
[
[
INTO
INTO


@variable_name
@variable_name

[,…n]]
[,…n]]

Truy xuất từng dòng dữ liệu. Kiểm tra phạm vi con
Truy xuất từng dòng dữ liệu. Kiểm tra phạm vi con
trỏ bằng
trỏ bằng


@@Fetch_status
@@Fetch_status
@@fetch_status:
@@fetch_status:
Trả về
Trả về


1 con trỏ
1 con trỏ
đã được dời qua
đã được dời qua
LAST.
LAST.
Trả về 0
Trả về 0
vẫn còn trong phạm vi duyệt con trỏ.
vẫn còn trong phạm vi duyệt con trỏ.
vòng lặp
vòng lặp
While

While
để duyệt cả tập kết quả của Cursor
để duyệt cả tập kết quả của Cursor

INTO
INTO


@variable_name
@variable_name
[,
[,
n
n
]:
]:


Allows data from the
Allows data from the
columns of a fetch to be placed into local variables
columns of a fetch to be placed into local variables
10

Có thể dùng các câu lệnh
Có thể dùng các câu lệnh
Update
Update
hoặc
hoặc

Delete
Delete
để hiệu
để hiệu
chỉnh dữ liệu.
chỉnh dữ liệu.

Sử dụng dữ liệu của mẫu tin hiện hành: Dữ liệu gán
Sử dụng dữ liệu của mẫu tin hiện hành: Dữ liệu gán
cho các biến tương ứng trong câu lệnh
cho các biến tương ứng trong câu lệnh
Fetch
Fetch

Cập nhật dữ liệu thông qua
Cập nhật dữ liệu thông qua
cursor
cursor
: Thực chất là dữ
: Thực chất là dữ
liệu được hiệu chỉnh trực tiếp vào trong bảng.
liệu được hiệu chỉnh trực tiếp vào trong bảng.



Cập nhật giá trị cho cột
Cập nhật giá trị cho cột
UPDATE
UPDATE
<Table_Name>

<Table_Name>
SET
SET
<Column_Name> = <Value> [,…n]
<Column_Name> = <Value> [,…n]
WHERE CURRENT OF
WHERE CURRENT OF
<Cur_Name>
<Cur_Name>

Xóa dữ liệu thông qua cursor: Thực sự là dữ liệu xóa
Xóa dữ liệu thông qua cursor: Thực sự là dữ liệu xóa
trên bảng
trên bảng
DELETE
DELETE
<Ten Table>
<Ten Table>
WHERE CURRENT
WHERE CURRENT


OF
OF
<Cur_name>
<Cur_name>
11

Đóng Cursor
Đóng Cursor

Kết thúc hành động của cursor cho lần mở (open), nó
Kết thúc hành động của cursor cho lần mở (open), nó
vẫn hiện hữu cho đến khi gặp một lệnh Open khác
vẫn hiện hữu cho đến khi gặp một lệnh Open khác
hoặc gặp lệnh Close cursor.
hoặc gặp lệnh Close cursor.
CLOSE
CLOSE
cursor_name
cursor_name

Giải phóng Cursor
Giải phóng Cursor
Giải phóng cursor, hủy bỏ tham chiếu đến con trỏ từ
Giải phóng cursor, hủy bỏ tham chiếu đến con trỏ từ
session hiện hành. Tiến trình này làm cho tài nguyên
session hiện hành. Tiến trình này làm cho tài nguyên
trở về trạng thái sẵn sàng truy xuất.
trở về trạng thái sẵn sàng truy xuất.
DEALLOCATE
DEALLOCATE
cursor_name
cursor_name
12
DECLARE
DECLARE
contro
contro
CURSOR FOR
CURSOR FOR





Select
Select
mahang, tenhang, soluong
mahang, tenhang, soluong
From
From


mathang
mathang
OPEN
OPEN
contro
contro
Declare
Declare
@mahang
@mahang
Nvarchar(10)
Nvarchar(10)
Declare
Declare
@tenhang
@tenhang
Nvarchar(10)
Nvarchar(10)



Declare
Declare
@soluong
@soluong
Int
Int


FETCH NEXT FROM
FETCH NEXT FROM
contro
contro
INTO
INTO
@mahang, @tenhang, @soluong
@mahang, @tenhang, @soluong
While
While
@@FETCH_STATUS
@@FETCH_STATUS
= 0
= 0


Begin
Begin





Print 'Ma hang: '+@mahang
Print 'Ma hang: '+@mahang


Print 'Ten hang:'+@tenhang
Print 'Ten hang:'+@tenhang


Print 'So luong: '+
Print 'So luong: '+
STR
STR
(@soluong)
(@soluong)


FETCH NEXT FROM
FETCH NEXT FROM
contro
contro


INTO
INTO
@mahang, @tenhang, @soluong
@mahang, @tenhang, @soluong



End
End


CLOSE
CLOSE
contro
contro
DEALLOCATE
DEALLOCATE
contro
contro
13
Declare
Declare
MyCursor
MyCursor
CURSOR FOR
CURSOR FOR
Select
Select
c.CustomerId, c.CompanyName, o.OrderID, o.OrderDate
c.CustomerId, c.CompanyName, o.OrderID, o.OrderDate
From
From
Customers c
Customers c
Inner Join
Inner Join
Orders o

Orders o
ON
ON
c.CustomerID = o.CustomerID
c.CustomerID = o.CustomerID
FOR UPDATE
FOR UPDATE
OPEN
OPEN
MyCursor
MyCursor
Declare
Declare
@cid
@cid
varchar
varchar
(8), @cn varchar(80), @o
(8), @cn varchar(80), @o
int
int
, @od
, @od
datetime
datetime
FETCH NEXT FROM
FETCH NEXT FROM
MyCursor
MyCursor
INTO

INTO
@cid, @cn, @o, @od
@cid, @cn, @o, @od
Select
Select
@cid, @cn
@cid, @cn
Begin TRANSACTION
Begin TRANSACTION
Update
Update
Customers
Customers
SET
SET
CompanyName =
CompanyName =
'q'
'q'
Where
Where


Current Of
Current Of
MyCursor
MyCursor
Deallocate
Deallocate
MyCursor

MyCursor
Select
Select
*
*
From
From
Customers
Customers
Where
Where
CompanyName =
CompanyName =
'q'
'q'
Rollback TRANSACTION
Rollback TRANSACTION
14
TRIGGER
14
14
15
I. Khái niệm cơ bản về Trigger:
I. Khái niệm cơ bản về Trigger:

Cũng tương tự như
Cũng tương tự như
store procedure
store procedure
, một

, một
Trigger
Trigger


một đối tượng chứa một tập các câu lệnh SQL và tập
một đối tượng chứa một tập các câu lệnh SQL và tập
các câu lệnh này sẽ được thực thi khi
các câu lệnh này sẽ được thực thi khi
trigger
trigger
được gọi.
được gọi.

Điểm khác biệt giữa
Điểm khác biệt giữa
store procedure
store procedure


trigger
trigger
là: các
là: các
store procedure
store procedure
được thực thi khi người sử dụng có lời
được thực thi khi người sử dụng có lời
gọi đến chúng còn các
gọi đến chúng còn các

trigger
trigger
lại được “gọi”
lại được “gọi”
TỰ ĐỘNG
TỰ ĐỘNG


khi xảy ra những giao tác làm thay đổi dữ liệu trong
khi xảy ra những giao tác làm thay đổi dữ liệu trong
các bảng.
các bảng.

Mỗi một
Mỗi một
trigger
trigger
được tạo ra và gắn liền với một bảng
được tạo ra và gắn liền với một bảng
nào đó trong cơ sở dữ liệu.
nào đó trong cơ sở dữ liệu.
Khi dữ liệu trong bảng bị
Khi dữ liệu trong bảng bị
thay đổi thì trigger sẽ được tự đông kích hoạt.
thay đổi thì trigger sẽ được tự đông kích hoạt.


16

Dùng trigger một cách hợp lý trong cơ sở dữ liệu sẽ có

Dùng trigger một cách hợp lý trong cơ sở dữ liệu sẽ có
tác động rất lớn trong việc tăng hiệu năng của CSDL:
tác động rất lớn trong việc tăng hiệu năng của CSDL:

Một trigger có thể nhận biết, ngăn chặn và huỷ bỏ được
Một trigger có thể nhận biết, ngăn chặn và huỷ bỏ được
những thao tác làm thay đổi trái phép dữ liệu trong cơ
những thao tác làm thay đổi trái phép dữ liệu trong cơ
sở dữ liệu.
sở dữ liệu.

Các thao tác trên dữ liệu (
Các thao tác trên dữ liệu (
Delete
Delete
,
,
Insert
Insert
,
,
Update
Update
) có thể
) có thể
được
được
trigger
trigger
phát hiện ra và tự động thực hiện một loạt

phát hiện ra và tự động thực hiện một loạt
các thao tác trên CSDL nhằm đảm bảo tính hợp lệ của
các thao tác trên CSDL nhằm đảm bảo tính hợp lệ của
dữ liệu
dữ liệu

Thông qua
Thông qua
trigger
trigger
, ta có thể tạo và kiểm tra được
, ta có thể tạo và kiểm tra được
những mối quan hệ phức tạp hơn giữa các bảng trong
những mối quan hệ phức tạp hơn giữa các bảng trong
cơ sở dữ liệu mà bản thân các ràng buộc không thể
cơ sở dữ liệu mà bản thân các ràng buộc không thể
thực hiện được.
thực hiện được.
17
1. Định nghĩa Trigger:
1. Định nghĩa Trigger:
CREATE TRIGGER
CREATE TRIGGER
tên_trigger
tên_trigger
ON tên_bảng
ON tên_bảng
[
[
WITH

WITH


ENCRYPTION
ENCRYPTION
]
]


FOR
FOR
{ [
{ [
INSERT
INSERT
] [,] [
] [,] [
UPDATE
UPDATE
] [,] [
] [,] [
DELETE
DELETE
] }
] }
AS
AS


[

[
IF UPDATE
IF UPDATE
(tên_cột)
(tên_cột)


[
[
AND UPDATE
AND UPDATE
(tên_cột) |
(tên_cột) |
OR UPDATE
OR UPDATE
(tên_cột)] ]
(tên_cột)] ]
các_câu_lệnh_của_trigger
các_câu_lệnh_của_trigger
18
Create Trigger
Create Trigger
tg_NhatKyBanHang_insert
tg_NhatKyBanHang_insert
On
On
NhatKyBanHang
NhatKyBanHang



FOR INSERT
FOR INSERT


AS
AS
Update
Update


MatHang
MatHang


Set
Set


SoLuong
SoLuong
= m.SoLuong -
= m.SoLuong -
i
i
.SoLuong
.SoLuong
From
From
Mathang
Mathang

as
as
m
m
Inner Join
Inner Join


Inserted
Inserted


as
as


i
i
On
On
m.MaHang =
m.MaHang =
i
i
.MaHang
.MaHang
19

Với trigger vừa tạo ở trên, nếu dữ liệu trong bảng
Với trigger vừa tạo ở trên, nếu dữ liệu trong bảng

MatHang là:
MatHang là:
Insert Into
Insert Into
NhatKyBanBang
NhatKyBanBang
(NgayBan, NguoiMua, MaHang, SoLuong, GiaBan)
(NgayBan, NguoiMua, MaHang, SoLuong, GiaBan)
Values
Values
('5/5/2004', N'Trần Ngọc Thanh', 'H1',
('5/5/2004', N'Trần Ngọc Thanh', 'H1',
10
10
, 5200)
, 5200)

Dữ liệu trong bảng MatHang sau khi ta thực hiện câu
Dữ liệu trong bảng MatHang sau khi ta thực hiện câu
lênh Insert trên:
lênh Insert trên:
20

Hai
Hai
bảng logic
bảng logic


Inserted

Inserted


Deleted
Deleted
để sử dụng trong các
để sử dụng trong các
trigger
trigger
. Cấu trúc của hai bảng này tương tự như cấu
. Cấu trúc của hai bảng này tương tự như cấu
trúc của bảng mà
trúc của bảng mà
trigger
trigger
tác động. Dữ liệu trong hai
tác động. Dữ liệu trong hai
bảng này tuỳ thuộc vào câu lệnh tác động lên bảng làm
bảng này tuỳ thuộc vào câu lệnh tác động lên bảng làm
kích hoạt
kích hoạt
Trigger:
Trigger:





Khi câu lệnh
Khi câu lệnh

Delete
Delete
được thực thi trên bảng,
được thực thi trên bảng,
các dòng
các dòng
dữ liệu bị xoá sẽ được sao chép vào trong
dữ liệu bị xoá sẽ được sao chép vào trong


bảng
bảng


Deleted
Deleted
.
.
Trong trường hợp này
Trong trường hợp này


Bảng Inserted
Bảng Inserted


không có dữ liệu.
không có dữ liệu.






Dữ liệu trong
Dữ liệu trong


bảng Inserted
bảng Inserted


sẽ là dòng dữ liệu được bổ
sẽ là dòng dữ liệu được bổ
sung vào bảng gây nên sự kích hoạt đối với
sung vào bảng gây nên sự kích hoạt đối với


trigger
trigger


bằng câu lệnh
bằng câu lệnh
Insert
Insert
.
.
Trong trường hợp này
Trong trường hợp này



Bảng
Bảng
Deleted
Deleted
không có dữ liệu
không có dữ liệu
.
.
21

Khi câu lệnh
Khi câu lệnh
UPDATE
UPDATE
được thực thi trên bảng:
được thực thi trên bảng:

Các dòng dữ liệu cũ chịu sự tác động của câu lệnh sẽ
Các dòng dữ liệu cũ chịu sự tác động của câu lệnh sẽ
được sao chép vào bảng
được sao chép vào bảng
Deleted
Deleted

Còn trong bảng
Còn trong bảng
Inserted
Inserted
sẽ là các dòng sau khi đã được

sẽ là các dòng sau khi đã được
cập nhật.
cập nhật.

Thay vì chỉ định một
Thay vì chỉ định một
trigger
trigger
được kích hoạt trên một
được kích hoạt trên một
bảng, ta có thể chỉ định
bảng, ta có thể chỉ định
trigger
trigger
được kích hoạt và thực
được kích hoạt và thực
hiện những thao tác cụ thể khi việc thay đổi dữ liệu
hiện những thao tác cụ thể khi việc thay đổi dữ liệu
chỉ
chỉ
liên quan đến một số cột nhất định nào đó của cột
liên quan đến một số cột nhất định nào đó của cột
.
.

Trong trường hợp này, ta sử dụng mệnh đề
Trong trường hợp này, ta sử dụng mệnh đề
IF
IF



UPDATE
UPDATE
trong trigger.
trong trigger.
IF UPDATE
IF UPDATE
không sử dụng
không sử dụng
được đối với câu lệnh
được đối với câu lệnh
DELETE
DELETE
.
.
22

Xét lại ví dụ với hai bảng
Xét lại ví dụ với hai bảng
MatHang
MatHang


NhatKyBanHang
NhatKyBanHang
,
,
trigger dưới đây được kích hoạt khi ta tiến hành cập nhật
trigger dưới đây được kích hoạt khi ta tiến hành cập nhật
duy nhất

duy nhất
1 cột
1 cột
Soluong
Soluong
cho bảng
cho bảng
NhatKyBanHang
NhatKyBanHang
Create Trigger
Create Trigger
tg_nhatkybanhang_update_soluong
tg_nhatkybanhang_update_soluong
ON NhatKyBanHang
ON NhatKyBanHang
FOR UPDATE
FOR UPDATE
AS
AS
IF UPDATE
IF UPDATE
(soluong)
(soluong)
Update
Update


mathang
mathang
Set

Set
MatHang.soluong = MatHang.soluong -
MatHang.soluong = MatHang.soluong -
(
(
Inserted
Inserted
.soluong -
.soluong -
Deleted
Deleted
.soluong)
.soluong)
From
From
(
(
Deleted
Deleted
Inner Join
Inner Join


Inserted
Inserted
On
On
Deleted
Deleted
.stt =

.stt =
Inserted
Inserted
.stt)
.stt)
Inner Join
Inner Join
MatHang
MatHang
On
On


MatHang.MaHang =
MatHang.MaHang =
Deleted
Deleted
. MaHang
. MaHang
23



Với
Với
trigger
trigger
ở ví dụ trên, câu lệnh:
ở ví dụ trên, câu lệnh:
Update

Update
NhatKyNanHang
NhatKyNanHang
Set
Set
soluong=soluong+20
soluong=soluong+20
Where
Where
stt=1
stt=1
Sẽ kích hoạt
Sẽ kích hoạt
Trigger
Trigger
ứng với mệnh đề
ứng với mệnh đề
IF UPDATE
IF UPDATE


(soluong),
(soluong),
câu lệnh Update trong trigger sẽ được thực thi.
câu lệnh Update trong trigger sẽ được thực thi.



Tuy nhiên câu lệnh sau không kích hoạt
Tuy nhiên câu lệnh sau không kích hoạt

trigger
trigger
này.
này.


Update
Update
NhatKyNanHang
NhatKyNanHang
Set
Set
nguoimua=N'Mai Hữu Toàn'
nguoimua=N'Mai Hữu Toàn'
Where
Where
stt=3
stt=3
24
Bảo mật trong SQL Server
15
15
25

Windows Authentication
Windows Authentication
Mode:
Mode:
Windows Authentication:
Windows Authentication:



User phải là những User
User phải là những User
được Windows quản lý mới
được Windows quản lý mới
được truy nhập.
được truy nhập.

Mixed Mode:
Mixed Mode:
Windows and SQL Server
Windows and SQL Server
Authentication:
Authentication:
User của
User của
Windows và SQL Server để
Windows và SQL Server để
có thể thiết lập để truy
có thể thiết lập để truy
nhập SQL Server
nhập SQL Server
CHẾ ĐỘ BẢO MẬT – SECURITY MODE
CHẾ ĐỘ BẢO MẬT – SECURITY MODE

×