Reputation: 191
In sql server 2005 I have a table like this
empno name project -------- -------- ----------- 1 ram pro-1 2 sheik pro-2
Now I want to raise error when I try to insert record with empno and project values already present in table.
Upvotes: 0
Views: 3915
Reputation: 4469
If exists then RAISERROR
unless insert accordingly, code block is given below:
IF EXISTS (SELECT 1 FROM targetTable AS t
WHERE t.empNo = @yourEmpNo
AND t.project = @yourProject)
BEGIN
RAISERROR('Raising errors',18,1)
END
ELSE
BEGIN
INSERT INTO yourTable (empno, name, project)
SELECT @empno, @name, @project
END
Upvotes: 3
Reputation: 17540
If you want to raise an error, you could put a UNIQUE INDEX or UNIQUE CONSTRAINT on (empno, project)
When you try to INSERT
a value that conflicts with the INDEX/CONSTRAINT
an exception will be thrown.
Alternatively you can insert if the record doesn't exist or update name
if it is already in the table:
IF NOT EXISTS (SELECT 1
FROM yourTable AS t
WHERE t.empNo = @yourEmpNo
AND t.project = @yourProject)
BEGIN
INSERT INTO yourTable (empno, name, project)
SELECT @empno, @name, @project
END
ELSE
BEGIN
UPDATE t
SET t.Name = @name
FROM yourTable AS t
WHERE t.empno = @empno
AND t.project = @project
END
Upvotes: 3