-
-
Notifications
You must be signed in to change notification settings - Fork 2
ALTER DATABASE
See APIS ➞
client.query()
,client.alterDatabase()
Rename database:
// (a): SQL syntax
await client.query(
`ALTER SCHEMA database_1
RENAME TO database_1_new`,
{ desc: 'Alter description' }
);
// (b): Function-based syntax
const database = await client.alterDatabase(
'database_1',
(schema) => schema.name('database_1_new'),
{ desc: 'Alter description' }
);
Note
While the function-based syntax may read "alter database", the "schema" kind is implied by default. To actually imply the "database" kind, set options.kind === 'database'
:
client.alterDatabase(..., { desc: 'Alter description', kind: 'database' });
Alter deeply:
// Function-based syntax
const database = await client.alterDatabase(
'database_1',
(schema) => {
schema.name('database_1_new');
schema.table('table_1').name('table_1_new');
schema.table('table_1').column('col_1').name('col_1_new');
},
{ desc: 'Alter description' }
);
Tip
The equivalent SQL syntax via client.query()
would otherwise be:
.query('ALTER DATABASE... RENAME TO...')
.query('ALTER TABLE... RENAME TO...')
.query('ALTER TABLE... RENAME COLUMN...')
See related ➞
CREATE TABLE
,ALTER TABLE
,DROP TABLE
Add tables:
// (a): SQL syntax
await client.query(
`CREATE TABLE database_1.table_1 (
col_1 varchar UNIQUE,
col_2 varchar
)`,
{ desc: 'Alter description' }
);
// (b): Function-based syntax
const database = await client.alterDatabase(
'database_1',
(schema) => {
schema.table({
name: 'table_1',
columns: [
{ name: 'col_1', type: 'varchar', uniqueKey: true },
{ name: 'col_2', type: 'varchar' }
]
});
},
{ desc: 'Alter description' }
);
Note
Where the table implied by name already exists, the table is modified with the diff between the existing schema and the new schema.
Drop tables:
// (a): SQL syntax
await client.query(
`DROP TABLE database_1.table_1`,
{ desc: 'Alter description' }
);
// (b): Function-based syntax
const database = await client.alterDatabase(
'database_1',
(schema) => {
schema.table('table_1', false);
},
{ desc: 'Alter description' }
);
Tip
PostgreSQL:
To add a CASCADE
or RESTRICT
flag to each DROP TABLE
operation, use options.cascadeRule
.
client.alterDatabase(..., { desc: 'Alter description', cascadeRule: 'CASCADE' });
Return the resulting database schema:
// (a): SQL syntax
const schema = await client.query(
`ALTER SCHEMA database_1
RENAME TO database_1_new
RETURNING SCHEMA`,
{ desc: 'Alter description' }
);
// (b): Function-based syntax
const schema = await client.alterDatabase(
'database_1',
(schema) => {
schema.name('database_1_new');
},
{ desc: 'Renaming for testing purposes', returning: 'schema' }
);
See related ➞
database.schema()
Return the associated savepoint instance:
// (a): SQL syntax
const savepoint = await client.query(
`ALTER SCHEMA database_1
RENAME TO database_1_new
RETURNING SAVEPOINT`,
{ desc: 'Alter description' }
);
// (b): Function-based syntax
const savepoint = await client.alterDatabase(
'database_1',
(schema) => {
schema.name('database_1_new');
},
{ desc: 'Renaming for testing purposes', returning: 'savepoint' }
);
See related ➞
database.savepoint()