|  | Posted by Tom Moreau on 06/16/92 11:30 
It's hard to understand your spec.  Is it that what you want is that any new_name that you insert into tb_new does not exist in tb_current?  If so, a
 trigger will do it:
 
 create trigger triu_tb_new on tb_new after insert, update
 as
 if @@ROWCOUNT = 0
 return
 
 if exists (select * from inserted i
 join tb_current c on c.current_names = i.new_name)
 begin
 raiserror ('Names exist in tb_current.', 16, 1)
 rollback tran
 end
 go
 
 You can put a similar trigger on tb_current:
 
 create trigger triu_tb_new on tb_new after insert, update
 as
 if @@ROWCOUNT = 0
 return
 
 if exists (select * from inserted i
 join tb_new_name n on i.current_names = n.new_name)
 begin
 raiserror ('Names exist in tb_new_name.', 16, 1)
 rollback tran
 end
 go
 
 --
 Tom
 
 ----------------------------------------------------
 Thomas A. Moreau, BSc, PhD, MCSE, MCDBA
 SQL Server MVP
 Columnist, SQL Server Professional
 Toronto, ON   Canada
 www.pinpub.com
 ..
 <uw_badgers@email.com> wrote in message
 news:1130545124.342622.45140@g47g2000cwa.googlegroups.com...
 Is it possible to create a unique constraint to a column from another
 table? For example:
 
 tb_current:
 current_names
 --------------
 aaa
 bbb
 
 tb_new:
 new_name
 --------
 ccc
 
 Now I want to create a constraint on tb_new.new_name to be unique with
 respect to tb_current.current_names. However, tb_new.new_name should
 not be unique to itself. So I should not be able to insert 'aaa' to
 tb_new.new_name. But I should be able to insert 'ccc' to
 tb_new.new_name.
 
 Here's the script to reproduce this example:
 
 create table tb_current
 (
 current_names varchar(10)
 )
 create table tb_new
 (
 new_name varchar(10)
 )
 insert tb_current values ('aaa')
 insert tb_current values ('bbb')
 insert tb_new values ('ccc')
 
 select * from tb_current
 select * from tb_new
 
 insert tb_new values ('aaa') -- this should NOT be allowed
 insert tb_new values ('ccc') -- this should be allowed
  Navigation: [Reply to this message] |