Solved

Deleting value on duplicate with trigger (or something else?)

Posted on 2009-07-12
6
235 Views
Last Modified: 2012-05-07
I have a table which contains 4 fields:
PermID, CN, inAD, and DTS.

I cannot set any of the fields to be unique individually. They do have to be unique by combining PermID and CN.
Meaning:
PermID    CN
1016       5997
1016       5998
1017       5997
1017       5998

All the above are acceptable entries, however, I want to make sure that no additional duplicate value combination is inserted: i.e:
another 1016    5997

I'm not sure about the best way to go about doing this, though I figured that a FOR trigger may do the trick, to check upon inserting, and I think should also be INSERT/UPDATE, though I wasn't sure how to write that,  and exiting that insert/update statement if it already exists. I've attempted to write it, and I'm pretty sure I did it wrong, but maybe someone out there, can help me with getting what I need. Here's what I have so far: (Please excuse some of the syntax, I know it's wrong).

Also, if there's a better way to do this other than with a trigger, I'm definitely open to suggestions.

TiA!


CREATE TRIGGER [dbo].[Enrollment_Stop_On_Duplicate] ON [dbo].[Enrollment] 
 
FOR INSERT 
 
AS
BEGIN
SET NOCOUNT ON;
 
IF EXISTS(SELECT Enrollment.PermID, Enrollment.CN FROM INSERTED WHERE INSERTED.PermID=Enrollment.PermId and INSERTED.CN=Enrollment.CN);
 
END

Open in new window

0
Comment
Question by:cvservices
  • 4
  • 2
6 Comments
 
LVL 57

Accepted Solution

by:
Raja Jegan R earned 200 total points
ID: 24836770
Why not create an unique index on two columns like this:

create unique index IX_TEST on ur_table_name (PermID, CN)

Hope this helps
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836775
>> Also, if there's a better way to do this other than with a trigger, I'm definitely open to suggestions.

An unique index validates far more better than your trigger making unique index more efficient for your scenario. If you missed mentioning any scenarios, kindly mention those things so that we can figure out whether unique index or trigger is efficient.

Anyhow to check for unique values in two columns, the unique index above will help you much better.
0
 
LVL 1

Author Comment

by:cvservices
ID: 24836803
Ah ... perfect! I knew there was something simple like this! This worked like a charm. Thank you very much for your help on this.

At this point, I'm not really seeing any side effects from having this, I have to look again at my database design, but solution should do it just fine.

Since I was asking about a trigger though, and since I'm in the process of learning.

If I were to write a TRIGGER that would check for a field existence, and "exit" , or skip that entry if the field exists.. how would I write that? if it's not too much trouble...
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836829
One disadvantage of Unique index here is that if you try to insert duplicate values, it will throw out an error and might cause the application to crash if not properly handled.

In that case, a trigger would help by just raising an error message and a code sample as you requested below:

http://www.sqlmag.com/Article/ArticleID/25913/sql_server_25913.html
http://www.sqlmag.com/Files/23/25913/Listing_09.txt

Hope this helps
0
 
LVL 1

Author Comment

by:cvservices
ID: 24836836
Yes. I noticed that, though, I wrote my application to handle that error if and when it happens. also, this unique index is merely a safeguard at this point, as my application should never really get to the point where it tries to insert a duplicate.
Thanks for the heads up though, and for the samples. I will take a look.

The points are yours! :)

Cheers!
0
 
LVL 57

Expert Comment

by:Raja Jegan R
ID: 24836843
Glad to help you out.
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
sql server computed columns 11 31
TSQL query to generate xml 4 34
SQL Server: Unable to remove duplicate sets in Header/Detail 6 23
performance query 4 24
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question