use master
go
create database QLSV
on primary(
name = 'QLSV',
filename = 'E:\QLSV.mdf',
size = 3 MB,
maxsize = 10 MB,
filegrowth = 2MB
)
log on(
name = 'QLSV.ldf',
filename = 'E:\QLSV.ldf',
size =1 MB,
maxsize = 5MB,
filegrowth = 10%
)
go
use QLSV
go
create table Khoa(
maKhoa nchar(10) not null primary key,
tenKhoa nvarchar(20) not null,
soluongsv int not null
)
create table Lop(
maLop nchar(10) not null primary key,
maKhoa nchar(10) not null,
tenLop nvarchar(20) not null,
phong nvarchar(20),
soluong int not null,
constraint FK_Lop_Khoa foreign key(maKhoa)
references Khoa(maKhoa)
)
insert into Khoa values('K01',N'Kế toán',150)
insert into Khoa values('K02',N'Điện tử',200)
insert into Khoa values('K03',N'Cơ khí',280)
insert into Lop values('L01','K02',N'Điện tử 1',N'Phát triển',50)
insert into Lop values('L02','K01',N'Kế toán 3',N'Học tập',65)
insert into Lop values('L03','K03',N'Cơ khí 3',N'Sáng tạo',75)
------------2------------
ALTER trigger trg_insert
on Lop
for insert
AS BEGIN
declare @tl nchar(10)
set @tl = (SELECT maLop from inserted)
IF EXISTS(select * from Lop where maLop=@tl)
begin
raiserror(N'Đã tồn tại lớp',16,1)
rollback TRAN
RETURN
END
ELSE
BEGIN
DECLARE @slsv INT,@mak NCHAR(10)
SELECT @slsv=soluong FROM inserted
SELECT @mak=maKhoa FROM inserted
UPDATE Khoa SET soluongsv=soluongsv+@slsv WHERE maKhoa=@mak
END
END
–>test:
insert into dbo.Lop values('J08','K02',N'Điện tử 1',N'Phát ttt',10)
SELECT*FROM dbo.Lop
anh chị xem giúp e,e không hiểu sao trigger nó toàn hiện lỗi raiseorror dù insert chạy đúng



83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?