try use cascade:
fro example:CREATE TABLE [dbo].[test1] (
[id] [int] NOT NULL ,
[descr] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY]
GOCREATE TABLE [dbo].[test2] (
[id] [int] NOT NULL ,
[ref_id] [int] NOT NULL ,
[descr] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL 
) ON [PRIMARY]
GOALTER TABLE [dbo].[test1] WITH NOCHECK ADD 
CONSTRAINT [pk_id] PRIMARY KEY  CLUSTERED 
(
[id]
)  ON [PRIMARY] 
GOALTER TABLE [dbo].[test2] WITH NOCHECK ADD 
CONSTRAINT [PK_test2] PRIMARY KEY  CLUSTERED 
(
[id]
)  ON [PRIMARY] 
GOALTER TABLE [dbo].[test2] ADD 
CONSTRAINT [FK_test2_test1] FOREIGN KEY 
(
[ref_id]
) REFERENCES [dbo].[test1] (
[id]
) ON DELETE CASCADE  ON UPDATE CASCADE 
GOinsert into test1 values(1,'a dog')
insert into test1 values(2,'a cat')
insert into test1 values(3,'a fish')
insert into test1 values(4,'a camel')
go
insert into test2 values (1,2,'a cat')
insert into test2 values (2,3,'a fish')
insert into test2 values (3,4,'a camel')
goselect * from test1
select * from test2

解决方案 »

  1.   

    table test1 result is 
    id          descr 
    1           a dog
    2           a cat
    3           a fish
    4           a camel
    table test2 result is 
    id          ref_id      descr 
    1           2           a cat
    2           3           a fish
    3           4           a camelthen
    update test1 set id=6 where descr='a cat'id          descr 
    1           a dog
    3           a fish
    4           a camel
    6           a cattable test2 result is 
    id          ref_id      descr 
    1           6           a cat ---has change to 6
    2           3           a fish
    3           4           a camelyou know?!
      

  2.   

    以上我举例的是通过SQL SERVER2K的级联删除的方法,你也可以用TRIGGER或SP的方法来实现相同的FUNCTION.