我有三张关联的表,其中一个是承运单的表,里面
主要有委托日期、接收日期、驾驶员ID、车辆ID、承运单状态;另一个是驾驶员
表,里面主要有:驾驶证号、驾驶状态; 还有一张是车辆表,里面主要有:车
辆的状态;其中我把驾驶员的状态用0来表示空闲状态,1表示运货状态 还有承
运单的状态用0来表示未签收,1表示已签收。现在问题是:
我想在承运单添加信息时,且承运单状态为未签收的情况下,添加时,想把驾驶
员的状态由空闲变为运货,并且驾驶员要是处于运货状态,则不能删除。
还有一个问题是如果我承运单的状态变为已签收的同时,我的驾驶员要变成空闲
状态,想用触发器来做,但不知怎么做,请楼主多多指教。非常感谢!
也就是说你要在承运单表表上添加触发器,触发器有4中操作,增、删、改、查。
你主要做的是增删改的触发,只要你区分三种操作后,在相应的操作的后面添加相应的逻辑sql就可以了啊。
想在承运单添加信息时〔承运单肯定为未签收〕:新增承运单信息、更新司机状态信息。
承运单签收时候:更新承运单信息、、更新司机状态信息。
--第一点是添加承运单,用的是insert,这时单据状态是0,同时把驾驶员的状态改为1.第二点是更新承运单的状
--态,是update,这时状态被改为1,同时把驾驶员的状态改为0.
CREATE TRIGGER c_inup
on chengyundan --承运单表名
for insert,update
AS
begin
declare @status varchar(1) --这个是承运单状态
declare @jiaID varchar(20) --这个是承运单里的驾驶员id
select @status = c_status,@jiaID = j_id from inserted
if(isnull(@status,'')='0')
begin
update jiashiyuan set j_status = '1' where j_id=@jiaID
end
else if(isnull(@status,'')='1')
begin
update jiashiyuan set j_status = '0' where j_id=@jiaID
end
end
剩下的不能删除功能,可以做在表示层或是逻辑层,如果驾驶员表的状态为1,就return,不让他执行。