47 lines
999 B
SQL
47 lines
999 B
SQL
# name: test/sql/generated_columns/virtual/rowid.test
|
|
# description: Create a generated column using the 'rowid' system column
|
|
# group: [virtual]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE unit (price INTEGER, amount_sold INTEGER);
|
|
|
|
statement ok
|
|
INSERT INTO unit VALUES (5,4)
|
|
|
|
statement ok
|
|
INSERT INTO unit VALUES (4,5)
|
|
|
|
# Rowid as a system column is not supported
|
|
statement error
|
|
ALTER TABLE unit ADD COLUMN total_profit BIGINT GENERATED ALWAYS AS (price * rowid) VIRTUAL;
|
|
----
|
|
|
|
statement ok
|
|
ALTER TABLE unit ADD COLUMN rowid INTEGER;
|
|
|
|
# Cant create a generated column named 'rowid' that also tries to reference the 'rowid' system column
|
|
statement error
|
|
CREATE TABLE tbl (
|
|
price INTEGER,
|
|
rowid BIGINT GENERATED ALWAYS AS (rowid) VIRTUAL
|
|
);
|
|
----
|
|
|
|
# Reference a standard column named 'rowid'
|
|
statement ok
|
|
CREATE TABLE tbl (
|
|
rowid INTEGER,
|
|
index INTEGER GENERATED ALWAYS AS (rowid) VIRTUAL
|
|
)
|
|
|
|
statement ok
|
|
INSERT INTO tbl VALUES (5)
|
|
|
|
query I
|
|
SELECT index FROM tbl;
|
|
----
|
|
5
|