Microsoft SQL Server

Kiểm tra khóa chính trước khi Insert trong Stored Procedure

Khi làm việc với Cơ sở dữ liệu chúng ta hay gặp các tình huống phát sinh lỗi do ràng buộc dữ liệu. Ví dụ khi người dùng đăng ký thành viên, chúng ta cần kiểm tra email có tồn tại hay chưa? Hoặc thêm một sản phẩm (ở đây là sách) vào trong CSDL, cần kiểm tra mã sách tồn tại hay chưa? Chúng ta dễ dàng kiểm tra bằng hàm EXISTS  trong Stored Procedure của SQL.

SQL EXISTS được sử dụng kết hợp với một truy vấn phụ và được coi là đáp ứng, nếu trả về ít nhất một dòng . Nó có thể được sử dụng trong các trường hợp như SELECT, INSERT, UPDATE, hoặc DELETE .

Hướng dẫn sau giúp bạn kiểm tra Mã sách tồn tại hay chưa trước khi thực thi lệnh INSERT dữ liệu. Nếu có rồi thì bỏ qua, ngược lại thì INSERT vào trong CSDL.

Code tạo bảng mẫu

Create Table Book
(
    BookID nvarchar(50) primary key,
    Name nvarchar(50),
    Author nvarchar(50)
)
insert into Book(BookID, Name, Author) values('B01',N'Lá nằm trong lá',N'Nguyễn Nhật Ánh')

Code tạo thủ tục

create procedure Book_Insert
(
    @BookID nvarchar(50),
    @Name nvarchar(50),
    @Author nvarchar(50)
)
as
begin
    if not exists(select top 1 BookID from Book where BookID = @BookID)
        insert into Book(BookID, Name, Author) values(@BookID,@Name,@Author)
end
-- Test
exec Book_Insert 'B02', 'Văn học VN','Không rõ'

Chúc các bạn thành công

Published by

tuanitpro

Tôi là Lê Thanh Tuấn, và tôi chia sẻ những điều mình cho rằng nó là thú vị, hay giúp ích cho bạn!

Leave a Reply