#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: база данных автоматически присваивает уникальный идентификатор при создании новой строки, как описано в документации, которую я вставил в свой ответ. Вы должны попробовать это.