|
Posted by Tom Moreau on 11/18/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
[Back to original message]
|