Ask the Expert

Skipping record that already exists with insert statement

Hi. I have to do an insert statement, and I want to do it with cursors. But if a record already exists in the destination table, I want to skip it and insert the next record. Can anyone help me do that?

    Requires Free Membership to View

You can use a "merge" SQL statement. I have an example below:

I have two tables: scott.emp and scott.bonus. Below is the "merge" SQL statement:

 MERGE INTO bonus b USING (SELECT ename, job, sal, comm FROM emp WHERE ename IN ('SMITH', 'JAMES', 'TURNER', 'MARTIN', 'MILLER')) s ON (b.ename = s.ename) WHEN MATCHED THEN UPDATE SET b.comm = 700 WHEN NOT MATCHED THEN INSERT (b.ename, b.job, b.sal, b.comm) VALUES (s.ename, s.job, s.sal, 150);

The above merge will update the bonus comm field to 700 if the ename in bonus matches the ename in emp. If not, a new bonus record is inserted from the emp table.

Since you do not want to update and you have to use the update clause, you can change that clause to say:

 update set b.comm = b.comm

This was first published in August 2006

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: