A GENERATED column is a special column in a table whose value is automatically computed from other columns using an expression. PostgreSQL only supports stored generated columns.
Click to reveal answer
intermediate
What is a stored GENERATED column in PostgreSQL?
A stored GENERATED column saves the computed value physically in the table. Virtual GENERATED columns are not supported.
Click to reveal answer
beginner
How do you define a stored GENERATED column in PostgreSQL?
Use the syntax: <column_name> data_type GENERATED ALWAYS AS (expression) STORED. The expression calculates the value stored in the column.
Click to reveal answer
beginner
Can you insert or update values directly into a GENERATED column?
No, you cannot insert or update values directly into a GENERATED column because its value is always computed automatically from the expression.
Click to reveal answer
intermediate
Why might you choose a stored GENERATED column?
Stored GENERATED columns improve query performance because values are precomputed and saved, but they use more storage. Virtual columns are not supported in PostgreSQL.
Click to reveal answer
Which keyword is required to define a stored GENERATED column in PostgreSQL?
ASTORED
BVIRTUAL
CCOMPUTED
DCALCULATED
✗ Incorrect
In PostgreSQL, the keyword STORED is used to define a stored GENERATED column.
Can you manually insert a value into a GENERATED column?
AOnly if it is virtual
BNo, values are computed automatically
CYes, always
DOnly if the column is nullable
✗ Incorrect
GENERATED columns compute their values automatically; manual inserts or updates are not allowed.
What happens when you query a GENERATED column in PostgreSQL?
AThe value is computed on the fly
BThe query fails
CThe value is retrieved from stored data
DThe value is null
✗ Incorrect
PostgreSQL only supports stored GENERATED columns; values are retrieved from storage.
Which of these is a benefit of stored GENERATED columns?
AFaster query performance
BLess disk space used
CValues can be manually changed
DNo need to define an expression
✗ Incorrect
Stored GENERATED columns improve query speed because values are precomputed and saved.
Which PostgreSQL version introduced support for stored GENERATED columns?
A9.6
B10
C13
D12
✗ Incorrect
PostgreSQL 12 introduced support for stored GENERATED columns.
Explain what a GENERATED column is and how it works (stored vs virtual concept, noting PostgreSQL support).
Think about when the value is calculated and where it is saved.
You got /4 concepts.
Describe how to create a stored GENERATED column in PostgreSQL with an example.
Focus on the exact keywords and structure.
You got /3 concepts.
Practice
(1/5)
1. What is a GENERATED column in PostgreSQL?
easy
A. A column that stores user input without changes
B. A column that automatically calculates its value from other columns
C. A column that can only store text data
D. A column that requires manual updates every time
Solution
Step 1: Understand GENERATED column concept
A GENERATED column automatically computes its value based on other columns in the same row.
Step 2: Compare options with definition
Only A column that automatically calculates its value from other columns describes this automatic calculation feature correctly.
Final Answer:
A column that automatically calculates its value from other columns -> Option B
Quick Check:
GENERATED column = auto-calculated column [OK]
Hint: GENERATED means auto-calculated, not manual input [OK]
Common Mistakes:
Thinking GENERATED columns store manual input
Confusing GENERATED with regular stored columns
Assuming GENERATED columns only store text
2. Which of the following is the correct syntax to create a STORED GENERATED column in PostgreSQL?
easy
A. CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a * 2) STORED);
B. CREATE TABLE t (a INT, b INT AS (a * 2));
C. CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a * 2) VIRTUAL);
D. CREATE TABLE t (a INT, b INT COMPUTED AS (a * 2));
Solution
Step 1: Recall PostgreSQL syntax for STORED GENERATED columns
PostgreSQL uses 'GENERATED ALWAYS AS (expression) STORED' to define such columns.
Step 2: Check each option
CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a * 2) STORED); matches the correct syntax. CREATE TABLE t (a INT, b INT AS (a * 2)); misses 'GENERATED ALWAYS' and 'STORED'. CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a * 2) VIRTUAL); uses 'VIRTUAL' which PostgreSQL does not support. CREATE TABLE t (a INT, b INT COMPUTED AS (a * 2)); uses 'COMPUTED' which is invalid in PostgreSQL.
Final Answer:
CREATE TABLE t (a INT, b INT GENERATED ALWAYS AS (a * 2) STORED); -> Option A
Quick Check:
PostgreSQL STORED syntax = GENERATED ALWAYS AS (...) STORED [OK]
Hint: Use 'GENERATED ALWAYS AS (...) STORED' for PostgreSQL generated columns [OK]
Common Mistakes:
Using VIRTUAL keyword which PostgreSQL does not support
Omitting GENERATED ALWAYS clause
Using COMPUTED instead of GENERATED
3. Given the table definition:
CREATE TABLE sales (
price NUMERIC,
quantity INT,
total NUMERIC GENERATED ALWAYS AS (price * quantity) STORED
);
What will be the result of:
INSERT INTO sales (price, quantity) VALUES (10, 3);
SELECT total FROM sales;
medium
A. Syntax error
B. [13]
C. [NULL]
D. [30]
Solution
Step 1: Understand the GENERATED column calculation
The 'total' column is calculated as price * quantity, so 10 * 3 = 30.
Step 2: Check the INSERT and SELECT results
After inserting (10, 3), selecting 'total' returns 30 as the stored generated value.
Final Answer:
[30] -> Option D
Quick Check:
price * quantity = 10 * 3 = 30 [OK]
Hint: GENERATED columns auto-calculate on insert [OK]
Common Mistakes:
Expecting manual input for generated column
Confusing addition with multiplication
Thinking generated columns can be NULL after insert
C. Missing STORED keyword for the GENERATED column
D. price and discount must be integers
Solution
Step 1: Check PostgreSQL GENERATED column syntax
PostgreSQL requires the STORED keyword for generated columns; omitting it causes an error.
Step 2: Analyze the given statement
The statement misses 'STORED' after the expression, so it is invalid syntax.
Final Answer:
Missing STORED keyword for the GENERATED column -> Option C
Quick Check:
GENERATED columns must include STORED in PostgreSQL [OK]
Hint: Always add STORED after GENERATED expression in PostgreSQL [OK]
Common Mistakes:
Assuming VIRTUAL columns are supported
Thinking arithmetic is not allowed
Believing data types must be integers
5. You want to create a table to store employee data with columns first_name, last_name, and a generated column full_name that combines both names separated by a space. Which is the correct way to define full_name in PostgreSQL?
hard
A. full_name TEXT GENERATED ALWAYS AS (first_name || ' ' || last_name) STORED
B. full_name TEXT GENERATED ALWAYS AS (first_name + ' ' + last_name) STORED
C. full_name TEXT AS (first_name || ' ' || last_name) VIRTUAL
D. full_name TEXT COMPUTED AS (first_name || ' ' || last_name)
Solution
Step 1: Use correct string concatenation operator in PostgreSQL
PostgreSQL uses '||' to concatenate strings, not '+'.
Step 2: Use correct GENERATED column syntax
PostgreSQL requires 'GENERATED ALWAYS AS (expression) STORED' for generated columns; VIRTUAL and COMPUTED are invalid.
Final Answer:
full_name TEXT GENERATED ALWAYS AS (first_name || ' ' || last_name) STORED -> Option A
Quick Check:
String concat with || and STORED keyword [OK]
Hint: Use || for string concat and STORED for generated columns [OK]
Common Mistakes:
Using + instead of || for string concatenation
Using VIRTUAL or COMPUTED keywords
Omitting STORED keyword
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.