Tech
02/01/2024, 3:30 AMArjan van Wieringen
02/01/2024, 5:23 AMTech
02/01/2024, 5:38 AMinsert {
// last_insert_rowid()
val empId = INSERT INTO employees(id) VALUES (DEFAULT) RETURNING id;
INSERT INTO Company(employeeId) VALUES (empId);
}
Basically I need to pass the id of one inserted object to another in the same transaction blockTech
02/01/2024, 5:38 AMArjan van Wieringen
02/01/2024, 7:43 AMgriffio
02/01/2024, 9:20 AMcurrval
e.g
insert: {
INSERT INTO employee(name) VALUES (?);
INSERT INTO company(employee_id) SELECT currval('employee_id_seq');
}
• Use CTE (Common Table Expressions - see https://github.com/griffio/sqldelight-postgres-04
insert:
WITH new_employee AS (
INSERT INTO employee(name) VALUES (?) RETURNING employee_id
),
new_company_employee AS (
INSERT INTO company(employee_id)
SELECT employee_id
FROM new_employee
ON CONFLICT DO NOTHING
RETURNING *
)
SELECT * FROM new_company_employee JOIN new_employee USING (employee_id);