Добавьте автоматический инкремент назад к столбцу первичного ключа в направляющих

Если вы хотите использовать Excel, вы можете увидеть следующий официальный документ Azure: Подключите Excel к одной базе данных в базе данных SQL Azure и создайте отчет .

Подключите Excel к единой базе данных в базе данных SQL Azure, импортируйте данные и создавайте таблицы и диаграммы на основе значений в базе данных. В этом руководстве вы создадите соединение между Excel и таблицей базы данных, сохраните файл, в котором хранятся данные и информацию о соединении для Excel, а затем создадите сводную диаграмму из значений базы данных.

enter image description here

Затем вы можете использовать «Обновить данные» и попробовать учебник, который вы нашли.

Надеюсь, это поможет.

15
задан lulalala 26 February 2014 в 03:19
поделиться

2 ответа

Попытка:

change_column :my_table, :id, :primary_key

или

my_table.change_column :id, :primary_key

Определенные адаптеры базы данных Rails не могут позволить Вам звонить change_column на первичном ключе. Если это так, затем можно всегда звонить execute выполнить изменение с помощью SQL непосредственно:

MySQL:

execute('ALTER TABLE "my_table" CHANGE "id" "id"
  bigint DEFAULT NULL auto_increment PRIMARY KEY')

PostgreSQL (метод 1):

max_id = execute(%%Q{SELECT id FROM "my_table" ORDER BY "id" DESC
  LIMIT 1}).to_a.first
execute(%%Q{CREATE SEQUENCE "my_table_id_seq" START #{max_id+1}})
execute(%%Q{ALTER TABLE "my_table" ALTER COLUMN "id"
  TYPE bigint})
execute(%%Q{ALTER TABLE "my_table" ALTER COLUMN "id"
  SET DEFAULT nextval('my_table_id_seq'::regclass)})
execute(%%Q{ALTER TABLE "my_table" ADD PRIMARY KEY("id")}) 

PostgreSQL (метод 2):

max_id = execute(%%Q{SELECT "id" FROM "my_table" ORDER BY "id" DESC
  LIMIT 1}).to_a.first
execute(%%Q{ALTER TABLE "my_table" RENAME COLUMN "id" TO "id_orig"})
execute(%%Q{ALTER TABLE "my_table" ADD COLUMN "id" bigserial NOT NULL})
execute(%%Q{UPDATE "my_table" SET "id"="id_orig"})
execute(%%Q{ALTER SEQUENCE "my_table_id_seq" RESTART #{max_id+1}})
execute(%%Q{ALTER TABLE "my_table" DROP COLUMN "id_orig"})

Если Вы не хотите использовать bigint/bigserial (64-разрядный), использовать int(11)/integer/serial вместо этого.

19
ответ дан 1 December 2019 в 02:55
поделиться

Ваш код Postgres не работает, невозможно использовать serial или bigserial в операторе ALTER TABLE. Правильный SQL для PostgreSQL:

ALTER TABLE table ALTER COLUMN id TYPE int 
ALTER TABLE table ALTER COLUMN id TYPE bigint
1
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: