PDA

View Full Version : giúp em giải bài sql này với



kaka_22
10-09-2011, 10:11
create database test1
go
use test1
go
create table staff1
(
code int,
name varchar(30) not null,
address varchar(100),
description varchar(500),
dept_code varchar(30),
constraint pk_staff1 primary key code,
constraint fk_staff1_department1 foreign key (dept_code) references department1 (dept_code)
)
go
create table department1
(
dept_code varchar(30) not null,
dept_name varchar(50),
total varchar(30)
constraint pk_department1 primary key dept_code
)

1. Viết thủ tục staff_insert1 có tham số đưa vào là code, name, address, description, dept_code,. Trước khi chèn một bản ghi mới vào bản staff1 với danh sách giá trị là giá trị của các biến phải kiểm tra xem dept_code đã tồn tại bên bản department1 chưa, nếu chưa trả ra 0.
2. Viết trigger staff1_trigger thực hiện công việc mỗi khi thêm 1 bản ghi mới vào bảng staff1 thì cột total trên bảng department1 sẽ tự động tăng lên 1.

Anh nào rành cái này giúp em giải 2 câu trên với. Em cũng mới bắt đầu học nên chưa rành viết mấy cái này. Em cảm ơn.

bongbingo
11-09-2011, 23:42
-- =============================================
-- Author: ddth
-- Create date:
-- Description: Insert
-- =============================================
Create PROCEDURE staff_insert1
-- Add the parameters for the stored procedure here
@code int,
@name varchar(30),
@address varchar(100),
@description varchar(500),
@dept_code varchar(30)

AS
BEGIN
declare @retValue int
if not exists(select dept_code from department1 where dept_code=@dept_code)
set @retValue = 0
else
begin
insert into staff1(code, name, address, description, dept_code)
values (@code, @name, @address, @description, @dept_code)
set @retValue=@code
end
return @retValue
END
GO

create TRIGGER TriggerUpdateTotal
ON staff1
For INSERT
as
--get dept_code just inserted
declare @dept_code varchar(30)
set @dept_code = (select dept_code from inserted)
-- update to department1
update department1
set total = total + 1
where dept_code=@dept_code