SQL 外键和触发器的疑问

来源:百度知道 编辑:UC知道 时间:2024/05/03 03:34:54
两个表 A (id 日期 购买人 )
B (id Aid 数量 单价 金额)
功能实现: 当A表插入一条记录的时候, B表里新增的记录Aid要求与A表的id一致 该如何实现
你们说的我做过 但我 先给A插入一条记录 能成功id自动增加 之后我给B添加记录 Aid我没写 就提示我不能为空 为什么Aid不能等于A的ID呢????

alter table B add constraint FK_Aid foreign key (Aid) references A(id)

把B的Aid作为A的id的外键就可以了

以上,希望对你有所帮助!

首先得给表A建立主键id
然后给表B的Aid建立外键

alter table A add constraint pk primary key(id);

alter table B add constraint fk foreign key(Aid) references A(id);

外键只是限定B表AID的值必须是A表ID已经存在的值,外键只是一个约束,他不会帮你插入值。但它可以帮你更新或删除列(即当A表某ID更新或删除后,B会随之更新删除)
alter table B add constraint FK_Aid foreign key (Aid) references A(id)
on update cascade | no action
on delete cascade | no action
要想a表插入记录后,b表同时新增一笔必须在A表中建立触发器向b表插入
create trigger 触发器名称 on A after insert
as
begin
set nocount on;
declare @id int
declare @id char
declare @数量 char
declare @单价 char
declare @金额 char
select @AID = ID FROM INSERTED --从插入暂存表中取值,同方法给其他变量取值。

insert b values(@id ,@id,@数量,@单价,@金额 )-- 向b表插入值
end

思路大概是这样,细节你自己去补充一下。祝你成功哦