我想更改数据库表的列位置而不会丢失数据.
例如:
当前表格:
+----+------+-------+----------+
| id | name | email | password |
+----+------+-------+----------+
Run Code Online (Sandbox Code Playgroud)
至
+----+----------+------+-------+
| id | password | name | email |
+----+----------+------+-------+
Run Code Online (Sandbox Code Playgroud) 是否可以在Postgres 8.1中更改列的自然顺序?
我知道你不应该依赖列顺序 - 它对我正在做的事情并不重要 - 我只需要它以一种更令人愉悦的方式制作一些自动生成的东西,以便字段顺序匹配所有从pgadmin通过后端到前端的方式.
有没有办法在Amazon Redshift(或Postgres,因为它基于它)中更改列排序?或者也许在特定位置添加一列?
在mysql中你可以做到:
ALTER TABLE MY_TABLE
ADD COLUMN {NEW_COL} AFTER {EXISTING_COL}
Run Code Online (Sandbox Code Playgroud)
但这在Redshift中不起作用.有任何想法吗?
如果我跑
SELECT *
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
列顺序是可预测的吗?
决定这个顺序的 postgres 的底层设计方面是什么?
使用 SQL 很容易做到这一点,但我需要编写一个我不熟悉的 Knex 迁移脚本。以下将在表order_id中的行末尾添加列order。我想order_id在之后添加id。我怎么做?
const TABLE_NAME = 'order';
exports.up = function (knex) {
return knex.schema.alterTable(TABLE_NAME, table => {
table
.specificType('order_id', 'char(10)')
.unique()
.notNullable();
});
};
exports.down = function (knex) {
return knex.schema.table(TABLE_NAME, function (t) {
t.dropColumn('order_id');
});
};
Run Code Online (Sandbox Code Playgroud)