Сгенерировать первичный ключ

#sql #database #snowflake-cloud-data-platform #auto-increment #create-table

#sql #База данных #snowflake-cloud-data-platform #автоматическое увеличение #создать таблицу #snowflake-облачная платформа данных

Вопрос:

У меня есть приведенная ниже таблица. И хотите создать столбец ‘store_id’ с ПЕРВИЧНЫМ КЛЮЧОМ, так как существует несколько магазинов с одинаковым названием. и как сгенерировать уникальный идентификатор для каждой строки?

 CREATE TABLE sales.stores (
    store_name VARCHAR (255) NOT NULL,
    phone VARCHAR (25),
    email VARCHAR (255),
    street VARCHAR (255),
    city VARCHAR (255),
    state VARCHAR (10),
    zip_code VARCHAR (5)
);
  

Ответ №1:

Кажется, вы ищете столбец идентификатора. В Snowflake вы бы записали это как:

 create table sales.stores (
    store_id number identity primary key,  -- identity
    store_name varchar (255) not null,
    phone varchar (25),
    email varchar (255),
    street varchar (255),
    city varchar (255),
    state varchar (10),
    zip_code varchar (5)
);
  

Как это работает, объясняется в документации:

При использовании AUTOINCREMENT значение по умолчанию для столбца начинается с указанного числа, и каждое последующее значение автоматически увеличивается на указанную величину. Эти параметры могут использоваться только для столбцов с числовыми типами данных.

AUTOINCREMENT и IDENTITY являются синонимами. Если для столбца задан любой из них, Snowflake использует последовательность для генерации значений для столбца. Дополнительные сведения о последовательностях см. в разделе Использование последовательностей.

Значение по умолчанию как для start, так и для step / increment равно 1 .

Значения идентификатора назначаются по умолчанию, поэтому вы просто игнорируете этот столбец при вставке, например:

 create table sales.stores (store_name, phone, email, street, city, state, zip_code)
select store_name, phone, email, street, city, state, zip_code
from ...
  

Комментарии:

1. Как вставить это значение, например: ВСТАВИТЬ В sales.stores ( ВЫБРАТЬ ? КАК идентификатор магазина, имя_магазина как имя_магазина, телефон КАК телефон, улица Как улица, почтовый индекс zip_code zip_code ИЗ sales.storesList )

2. @SteveLogue: просто игнорируйте этот столбец при вставке. Смотрите мою правку.

3. тогда вопрос остается тем же, как бы мне получить уникальный store_id?

4. @SteveLogue: база данных автоматически присваивает уникальный идентификатор при создании новой строки, как описано в документации, которую я вставил в свой ответ. Вы должны попробовать это.