What does the RETURNING clause do in a PostgreSQL query?
The RETURNING clause lets you get back the data from rows that were just inserted, updated, or deleted, without running a separate SELECT query.
Click to reveal answer
beginner
How is the RETURNING clause useful in real-life applications?
It saves time and resources by giving you the changed data immediately, like getting the new ID of an inserted row, so you can use it right away in your program.
Click to reveal answer
beginner
Can the RETURNING clause be used with UPDATE statements?
Yes, it can return the new values of the updated rows, so you know exactly what changed without running another query.
Click to reveal answer
intermediate
What is the difference between using RETURNING and running a separate SELECT after an INSERT?
RETURNING gives you the data immediately as part of the same query, which is faster and avoids extra steps, while SELECT needs a new query after the change.
Click to reveal answer
beginner
Write a simple INSERT statement using RETURNING to get the new row's id.
Example:
INSERT INTO users(name, email) VALUES('Alice', 'alice@example.com') RETURNING id;
Click to reveal answer
What does the RETURNING clause do in PostgreSQL?
AReturns data from rows affected by INSERT, UPDATE, or DELETE
BCreates a new table
CDeletes rows from a table
DChanges the database schema
✗ Incorrect
The RETURNING clause returns data from rows affected by data-changing statements like INSERT, UPDATE, or DELETE.
Which SQL statement can use the RETURNING clause?
AALTER
BSELECT
CCREATE
DINSERT
✗ Incorrect
The RETURNING clause is used with INSERT, UPDATE, and DELETE statements, not SELECT, CREATE, or ALTER.
Why might you prefer RETURNING over a separate SELECT after an INSERT?
AIt runs slower
BIt returns data immediately in one step
CIt requires more queries
DIt deletes the inserted row
✗ Incorrect
RETURNING returns the affected row data immediately, avoiding extra queries and improving efficiency.
What kind of data can RETURNING return after an UPDATE?
AOnly the old values
BOnly the new values
CThe new values of updated rows
DThe table schema
✗ Incorrect
RETURNING returns the new values of the rows after an UPDATE.
Which of these is a valid use of RETURNING in PostgreSQL?
ADELETE FROM users RETURNING *;
BSELECT * FROM users RETURNING id;
CCREATE TABLE users RETURNING id;
DALTER TABLE users RETURNING name;
✗ Incorrect
RETURNING can be used with DELETE to return deleted rows. It cannot be used with SELECT, CREATE, or ALTER.
Explain how the RETURNING clause works in PostgreSQL and why it is useful.
Think about how you get data back right after changing it.
You got /4 concepts.
Describe a scenario where using RETURNING would simplify your database code.
Imagine you want to use the new data immediately after a change.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of the RETURNING clause in PostgreSQL?
easy
A. To create a new table based on existing data
B. To return data from rows affected by INSERT, UPDATE, or DELETE in the same query
C. To backup the database automatically after changes
D. To schedule queries to run at a later time
Solution
Step 1: Understand the role of RETURNING clause
The RETURNING clause is used to get data from rows that are changed by INSERT, UPDATE, or DELETE commands.
Step 2: Compare options with this role
Only To return data from rows affected by INSERT, UPDATE, or DELETE in the same query correctly describes this behavior. Other options describe unrelated features.
Final Answer:
To return data from rows affected by INSERT, UPDATE, or DELETE in the same query -> Option B
Quick Check:
RETURNING returns changed rows data [OK]
Hint: RETURNING gives changed rows data immediately [OK]
Common Mistakes:
Thinking RETURNING creates tables
Confusing RETURNING with backup or scheduling
Assuming RETURNING only works with SELECT
2. Which of the following is the correct syntax to use the RETURNING clause after an INSERT statement?
easy
A. INSERT INTO table_name RETURNING * VALUES (...);
B. RETURNING * INSERT INTO table_name VALUES (...);
C. INSERT INTO table_name VALUES (...) RETURNING *;
D. INSERT INTO table_name VALUES (...) OUTPUT *;
Solution
Step 1: Recall correct RETURNING syntax
In PostgreSQL, RETURNING comes after the VALUES clause in an INSERT statement.
Step 2: Check each option
'INSERT INTO table_name VALUES (...) RETURNING *;' correctly places RETURNING after VALUES. Placing RETURNING between table_name and VALUES is incorrect order. Starting the statement with RETURNING is invalid. Using OUTPUT instead of RETURNING is SQL Server syntax, not PostgreSQL.
Final Answer:
INSERT INTO table_name VALUES (...) RETURNING *; -> Option C
Quick Check:
RETURNING follows VALUES in INSERT [OK]
Hint: RETURNING always comes after VALUES in INSERT [OK]
Common Mistakes:
Placing RETURNING before VALUES
Using OUTPUT instead of RETURNING
Putting RETURNING before INSERT
3. Given the table users(id SERIAL PRIMARY KEY, name TEXT, age INT), what will this query return?
UPDATE users SET age = age + 1 WHERE name = 'Alice' RETURNING id, age;
medium
A. The id and new age of all users named 'Alice' after increment
B. The id and old age of all users named 'Alice' before increment
C. All rows in the users table with updated ages
D. An error because RETURNING cannot be used with UPDATE
Solution
Step 1: Understand UPDATE with RETURNING
UPDATE changes rows matching the condition and RETURNING returns specified columns from those updated rows after the change.
Step 2: Analyze the query
The query increments age by 1 for users named 'Alice' and returns their id and new age values.
Final Answer:
The id and new age of all users named 'Alice' after increment -> Option A
Quick Check:
RETURNING shows updated rows data [OK]
Hint: RETURNING shows updated values, not old ones [OK]
Common Mistakes:
Thinking RETURNING shows old values
Assuming it returns all rows, not just updated
Believing RETURNING is invalid with UPDATE
4. Consider this DELETE query:
DELETE FROM orders WHERE order_date < '2023-01-01' RETURNING order_id;
Which of the following is a common mistake that would cause this query to fail?
medium
A. Writing RETURNING before WHERE clause
B. Using DELETE without WHERE clause
C. Using RETURNING without specifying columns
D. Using RETURNING with SELECT statement
Solution
Step 1: Check correct RETURNING placement
RETURNING must come after the WHERE clause in DELETE statements.
Step 2: Identify the error in options
Writing RETURNING before WHERE clause describes placing RETURNING before WHERE, which is invalid syntax and causes failure.
Final Answer:
Writing RETURNING before WHERE clause -> Option A
Quick Check:
RETURNING comes after WHERE in DELETE [OK]
Hint: RETURNING always follows WHERE clause [OK]
Common Mistakes:
Putting RETURNING before WHERE
Omitting columns in RETURNING (allowed but returns all columns)
Using RETURNING with SELECT (invalid)
Deleting without WHERE (allowed but risky)
5. You want to insert multiple rows into a products table and immediately get the generated product_id and price of each inserted row. Which query correctly uses the RETURNING clause to achieve this?
hard
A. INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) RETURN product_id, price;
B. INSERT INTO products (name, price) RETURNING product_id, price VALUES ('Pen', 1.5), ('Book', 10);
C. INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) OUTPUT product_id, price;
D. INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) RETURNING product_id, price;
Solution
Step 1: Recall correct syntax for multi-row INSERT with RETURNING
RETURNING clause comes after all VALUES and specifies columns to return.
Step 2: Evaluate each option
INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) RETURNING product_id, price; correctly places RETURNING after VALUES with correct columns. INSERT INTO products (name, price) RETURNING product_id, price VALUES ('Pen', 1.5), ('Book', 10); has wrong order. INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) OUTPUT product_id, price; uses OUTPUT which is not PostgreSQL syntax. INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) RETURN product_id, price; uses RETURN which is invalid.
Final Answer:
INSERT INTO products (name, price) VALUES ('Pen', 1.5), ('Book', 10) RETURNING product_id, price; -> Option D
Quick Check:
RETURNING after VALUES returns inserted rows data [OK]
Hint: RETURNING follows VALUES and lists columns to return [OK]
Common Mistakes:
Placing RETURNING before VALUES
Using OUTPUT instead of RETURNING
Using RETURN instead of RETURNING
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.