请问sqlserver中的两个表怎么进行关联

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:10:08
有两个表,一个表是负责注册的,当注册一个用户时会生成一条记录,每条记录有一个序列号,我想要另外的一个表跟着这个表同时生成记录,有相同的序列号,而又不想两表合并,怎么实现啊?请指教
能用外键实现吗?

CREATE TRIGGER studen
ON student_test //这个就是你注册那个表
FOR INSERT,update,delete
AS
insert into my_table (a,b) values (11,22) //这写你要关联的表的超做
GO

一、用触发器,不过最好不要这么用,因为这样做会使得不好维护
二、两次分别插入到两个表,这样比较直观

外键是用来实现“引用完整性”的,说白了就是一种约束,不能用来传值。
可以选择触发器或存储过程。

如果两个表字段相同可以用触发器:
CREATE TRIGGER trigger_AToB on A
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO A(a,b,c) SELECT a,b,c FROM inserted
INSERT INTO B(a,b,c) SELECT a,b,c FROM inserted
END
GO
INSERT INTO a(a,b,c)VALUES('aaa','aaa','aaa')

在查询分析器里执行上面的语句后,向A表添加数据会同时向B表添加。触发器比较方便,缺点是,一旦B表被删除了,向A表添加数据会报错。

存储过程就比较自由了:
CREATE PROC proc_InsertAToB
@a VARCHAR(10),
@b VARCHAR(20),
@c VARCHAR(30)
as
INSERT INTO A(a,b,c)VALUES(@a,@b,@c)
INSERT INTO B(a,b,c)VALUES(@a,@b,@c)
表B的字段和表A不一样也没关系,需要的话,可以再根据需要向存储过程添加参数。
使用的时候不再用INSERT INTO了,用:
EXECUTE proc_InsertAToB 'aaa'