Skip to content

Commit bff9570

Browse files
committed
Scripts for performing an insert if not exists operation
1 parent 8667606 commit bff9570

3 files changed

Lines changed: 42 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- Using INSERT IGNORE
2+
INSERT IGNORE INTO table_name (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
3+
VALUES (id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value);
4+
5+
6+
-- Using INSERT … ON DUPLICATE KEY UPDATE
7+
INSERT INTO table_name (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
8+
VALUES (id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value)
9+
ON DUPLICATE KEY UPDATE id = id;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- Using INSERT … ON CONFLICT
2+
INSERT INTO table_name (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
3+
VALUES (id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value)
4+
ON CONFLICT (id) DO NOTHING;
5+
6+
-- Using a DO Block
7+
DO $$
8+
BEGIN
9+
IF NOT EXISTS (
10+
SELECT 1 FROM table_name WHERE id = id_value
11+
) THEN
12+
INSERT INTO table_name (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
13+
VALUES (id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value);
14+
ELSE
15+
RAISE NOTICE 'A student already exists with this id. No insertion performed!';
16+
END IF;
17+
END $$;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-- Using MERGE
2+
MERGE INTO table_name AS target
3+
USING (VALUES (id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value))
4+
AS source (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
5+
ON target.id = source.id
6+
WHEN NOT MATCHED BY TARGET THEN
7+
INSERT (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
8+
VALUES (source.id, source.name, source.national_id, source.birth_date, source.enrollment_date, source.graduation_date, source.gpa);
9+
10+
-- Using EXCEPT
11+
INSERT INTO table_name (id, name, national_id, birth_date, enrollment_date, graduation_date, gpa)
12+
SELECT id_value, name_value, national_id_value, birth_date_value, enrollment_date_value, graduation_date_value, gpa_value
13+
EXCEPT
14+
SELECT id, name, national_id, birth_date, enrollment_date, graduation_date, gpa
15+
FROM table_name
16+
WHERE id = id_value;

0 commit comments

Comments
 (0)