powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Просто Трёп [закрыт для гостей] / Вопрос по постгрес - про вставку дефолтных значений
53 сообщений из 53, показаны все 3 страниц
Вопрос по постгрес - про вставку дефолтных значений
    #379321
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем скрипт:
Спойлер
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
-- так получается
drop table if exists test01;
create table test01
(
    id bigserial primary key,
    val varchar(100)
);
with recursive cte as
(
    select 1 i
    union all
    select i + 1
    from cte
    where i < 10
)
insert into test01(val)
select null
from cte;

select * from test01;

-- а так не получается
drop table if exists test01;
create table test01
(
    id bigserial primary key
);
-- как написать аналогичный DML?
select * from test01;
нужно в таблицу с одним полем автоинкрементным желательно запросом вставить несколько записей - 10-100-1000 не важно - ну какую то константу...
в мсскл есть insert into test01 default values и заебенить 100 раз эту команду в цикле... ну наверное можно как то так же и в постгрес? лучше конечно запросом.

Есть варианты?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379333
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
-- а так не получается
drop table if exists test01;
create table test01
(
    id bigserial primary key
);

do $$
declare
    i integer;
begin
    i = 1;
    while (i <= 10) loop
        insert into test01 default values;
        i = i + 1;
    end loop;

end $$;

select * from test01;
ну так работает... но не запросом... если не пойму как запросом делать то так оставлю - хуйсним
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379339
xevexan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
Дед-Папыхтет  03.05.2023, 15:16
[игнорируется]
нужно в таблицу с одним полем автоинкрементным желательно запросом вставить несколько записей
блядь, чтобы понять это "ТЗ", это надо быть вангой в 5 пакалении
ссука, излагать мысли, научись грамотно!
уёбан, бля!

пишешь, как баба полоумная
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379499
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
...
Рейтинг: 2 / 0
Нравится: Горбатый ёж, Ифрит
Вопрос по постгрес - про вставку дефолтных значений
    #379534
xevexan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[заблокирован]
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету
не ты адин
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379544
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
Мне тоже так кажется.
...
Изменено: 03.05.2023, 17:58 - Горбатый ёж
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379568
sergey11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Триггером его!
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379713
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
Вставить запросом ряд значений (можно и generate_series) в таблицу только дефолтные значения не указывая явные.

в мс к примеру

table (id int identity)
как её наполнить 10ком значений без всяких циклов и set_identity on/off?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379739
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:02
[игнорируется]
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
Вставить запросом ряд значений (можно и generate_series) в таблицу только дефолтные значения не указывая явные.

в мс к примеру

table (id int identity)
как её наполнить 10ком значений без всяких циклов и set_identity on/off?
Всё равно ничего не понятно.
Тебе увеличение нужно?
Насколько я знаю идентити это автоинкрементное поле.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379740
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:08
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:02
[игнорируется]
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
Вставить запросом ряд значений (можно и generate_series) в таблицу только дефолтные значения не указывая явные.

в мс к примеру

table (id int identity)
как её наполнить 10ком значений без всяких циклов и set_identity on/off?
Всё равно ничего не понятно.
Тебе увеличение нужно?
Насколько я знаю идентити это автоинкрементное поле.
Дед-Папыхтет  03.05.2023, 15:25
[игнорируется]
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
-- а так не получается
drop table if exists test01;
create table test01
(
    id bigserial primary key
);

do $$
declare
    i integer;
begin
    i = 1;
    while (i <= 10) loop
        insert into test01 default values;
        i = i + 1;
    end loop;

end $$;

select * from test01;
ну так работает... но не запросом... если не пойму как запросом делать то так оставлю - хуйсним
Как запросом вставить в test01 - 10 строк? в примере не запрос а цикл - 10 вставок 1й строки а нужно 1 вставка 10 строк
...
Изменено: 03.05.2023, 20:10 - Дед-Папыхтет
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379772
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:02
[игнорируется]
IT-Клоп  03.05.2023, 17:40
[игнорируется]
не совсем понял, что надо Пыхапету, но возможно, ему поможет generate_series()
Вставить запросом ряд значений (можно и generate_series) в таблицу только дефолтные значения не указывая явные.

в мс к примеру

table (id int identity)
как её наполнить 10ком значений без всяких циклов и set_identity on/off?
Ты не мог бы привести пример нужного датасета (короткий)?
АТО чувствуется, народу не совсем понятно требование.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379779
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное нужно 10 инсёртов заменить на один и без циклов.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379787
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:22
[игнорируется]
Наверное нужно 10 инсёртов заменить на один и без циклов.
Да! Наконецто мы поняли условие и друг-друга! )))
теперь вопрос - как сделать один инсерт 10 значений не указывая явно значения вставляемые?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379789
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет [игнорируется] 

вот твой первый скрипт и результат
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
testdb=# select * from test01;
 id | val
----+-----
  1 |
  2 |
  3 |
  4 |
  5 |
  6 |
  7 |
  8 |
  9 |
 10 |
(10 строк)
вот мы делаем series
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key,
    val varchar(100)
);
CREATE TABLE
testdb=# insert into test02(val) select '' from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id | val
----+-----
  1 |
  2 |
  3 |
  4 |
  5 |
  6 |
  7 |
  8 |
  9 |
 10 |
(10 строк)
в чём проблема?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379795
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:25
[игнорируется]
Дед-Папыхтет [игнорируется] 

вот твой первый скрипт и результат
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
testdb=# select * from test01;
 id | val
----+-----
  1 |
  2 |
  3 |
  4 |
  5 |
  6 |
  7 |
  8 |
  9 |
 10 |
(10 строк)
вот мы делаем series
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key,
    val varchar(100)
);
CREATE TABLE
testdb=# insert into test02(val) select '' from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id | val
----+-----
  1 |
  2 |
  3 |
  4 |
  5 |
  6 |
  7 |
  8 |
  9 |
 10 |
(10 строк)
в чём проблема?
в том что напиши это же самое когда в таблице нет val - есть только id bigserial/identity

ты пишешь:
insert into test02(val) select '' from generate_series(1,10) x;

с этим всё понятно, а когда val нет - нет поля которое нужно указать в insert into test02() select ??? from generate_series(1,10) x;
...
Изменено: 03.05.2023, 20:30 - Дед-Папыхтет
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379800
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет [игнорируется] 

а - то есть тебе надо чтобы не был указан явно список полей?
...
Рейтинг: 1 / 0
Нравится: Дед-Папыхтет
Вопрос по постгрес - про вставку дефолтных значений
    #379802
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:28
[игнорируется]
в том что напиши это же самое когда в таблице нет val - есть только id bigserial/identity
Если мне нп изменяет мой склероз, то bigserial это автоинкрементное поле. Тебе нужно вставить данные а таблицу с единственным автоинкрементным полем?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379804
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:32
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:28
[игнорируется]
в том что напиши это же самое когда в таблице нет val - есть только id bigserial/identity
Если мне нп изменяет мой склероз, то bigserial это автоинкрементное поле. Тебе нужно вставить данные а таблицу с единственным автоинкрементным полем?
Да
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379805
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:31
[игнорируется]
Дед-Папыхтет [игнорируется] 

а - то есть тебе надо чтобы не был указан явно список полей?
Да
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379806
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379807
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379809
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:33
[игнорируется]
Горбатый ёж  03.05.2023, 20:32
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:28
[игнорируется]
в том что напиши это же самое когда в таблице нет val - есть только id bigserial/identity
Если мне нп изменяет мой склероз, то bigserial это автоинкрементное поле. Тебе нужно вставить данные а таблицу с единственным автоинкрементным полем?
Да
Еббадь...
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Годидзе, учитывая условия задачи.

Я представить не могу для чего такая таблица может понадобиться.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379811
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Горбатый ёж  03.05.2023, 20:36
[игнорируется]
Я представить не могу для чего такая таблица может понадобиться.
[:blush2]
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379812
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
почему бы и нет
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key
    --val varchar(100)
);
CREATE TABLE
testdb=# insert into test02 select nextval('test02_id_seq'::regclass) from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 строк)
...
Рейтинг: 1 / 0
Нравится: Дед-Папыхтет
Вопрос по постгрес - про вставку дефолтных значений
    #379813
Фотография Ифрит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как заставить таблицу с одним полем identity самосгенерировать записи..
если странное влоб не получается, может пересмотреть условия задачи ?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379817
PaNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
IT-Клоп  03.05.2023, 20:38
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
почему бы и нет
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key
    --val varchar(100)
);
CREATE TABLE
testdb=# insert into test02 select nextval('test02_id_seq'::regclass) from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 строк)
а нет такого же, только в командной строке (или как там оно в Линуксах)?
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379818
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
Обрати внимание на описание поля id, это показывает как реализовано автоинкрементное поле в посгресе.
Думаю хак клопа сработает, но при этом запуск второй раз приведёт к вставке ещё 10 следующих значений.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379819
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
...
Рейтинг: 1 / 0
Нравится: Горбатый ёж
Вопрос по постгрес - про вставку дефолтных значений
    #379824
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:40
[игнорируется]
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
И сиквенс ещё создаётся.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379833
Фотография Ифрит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:40
[игнорируется]
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
ну, да, попутал в терминологии, связал с начальным постом отсылкой к эмэске
в оракле обычно норм триггер повесить, а в новье ещё подковёрная секвенция создаётся
...
Изменено: 03.05.2023, 20:45 - Ифрит
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379834
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  03.05.2023, 20:39
[игнорируется]
IT-Клоп  03.05.2023, 20:38
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
почему бы и нет
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key
    --val varchar(100)
);
CREATE TABLE
testdb=# insert into test02 select nextval('test02_id_seq'::regclass) from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 строк)
а нет такого же, только в командной строке (или как там оно в Линуксах)?
так это в командной строке
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379840
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:40
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
Обрати внимание на описание поля id, это показывает как реализовано автоинкрементное поле в посгресе.
Думаю хак клопа сработает, но при этом запуск второй раз приведёт к вставке ещё 10 следующих значений.
вставится следующая порция, соблюдая сиквенс - как и при нормальной работе
...
Изменено: 03.05.2023, 20:46 - IT-Клоп
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379845
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:42
[игнорируется]
IT-Клоп  03.05.2023, 20:40
[игнорируется]
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
И сиквенс ещё создаётся.
да, совершенно верно
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379848
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaNik  03.05.2023, 20:39
[игнорируется]
IT-Клоп  03.05.2023, 20:38
[игнорируется]
Дед-Папыхтет  03.05.2023, 20:34
[игнорируется]
IT-Клоп  03.05.2023, 20:33
[игнорируется]
можно сделать очень грязным хаком
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
testdb=# \d+ test02
                                                                   Таблица "public.test02"
 Столбец |          Тип           | Правило сортировки | Допустимость NULL |            По умолчанию            | Хранилище | Цель для статистики | Описание
---------+------------------------+--------------------+-------------------+------------------------------------+-----------+---------------------+----------
 id      | bigint                 |                    | not null          | nextval('test02_id_seq'::regclass) | plain     |                     |
 val     | character varying(100) |                    |                   |                                    | extended  |                     |
Индексы:
    "test02_pkey" PRIMARY KEY, btree (id)
Метод доступа: heap

testdb=# insert into test02 select nextval('test02_id_seq'::regclass),'' from generate_series(1,10) x;
INSERT 0 10
Val поле удали из таблицы оставь только айди. Сработает?
почему бы и нет
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
testdb=# create table test02(
   id bigserial primary key
    --val varchar(100)
);
CREATE TABLE
testdb=# insert into test02 select nextval('test02_id_seq'::regclass) from generate_series(1,10) x;
INSERT 0 10
testdb=# select * from test02;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
(10 строк)
а нет такого же, только в командной строке (или как там оно в Линуксах)?
Запускаешь psql и вуаля.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379851
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь конечно тоже сиквенс и мы из него и извлекаем. Этот сиквенс можно штатно извлечь из системного каталога, сделав хак не столь грязным.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379854
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:47
[игнорируется]
Горбатый ёж  03.05.2023, 20:42
[игнорируется]
IT-Клоп  03.05.2023, 20:40
[игнорируется]
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
И сиквенс ещё создаётся.
да, совершенно верно
Ща в оракле тт же самое, только не через тип реализовано, а через ключевое слово при создании поля.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379865
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:49
[игнорируется]
IT-Клоп  03.05.2023, 20:47
[игнорируется]
Горбатый ёж  03.05.2023, 20:42
[игнорируется]
IT-Клоп  03.05.2023, 20:40
[игнорируется]
serial - это не identity в MS SQL, у него нет такой жёсткой связки.

Это больше похоже на то, как реализована соответствующая техника в оракле: делается поле и к нему привязывается триггер
И сиквенс ещё создаётся.
да, совершенно верно
Ща в оракле тт же самое, только не через тип реализовано, а через ключевое слово при создании поля.
А, я тока помню, когда надо было это городить врукопашку и всё вспоминал - а у Sybase/MS-то identity, поудобнее...
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379870
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:52
[игнорируется]
А, я тока помню, когда надо было это городить врукопашку
С 12 версии поле создавать как as identity, дождались, чо...
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379871
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп [игнорируется] 

У mysql это поле auto_increment или как-то так.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379872
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:53
[игнорируется]
IT-Клоп  03.05.2023, 20:52
[игнорируется]
А, я тока помню, когда надо было это городить врукопашку
С 12 версии поле создавать как as identity, дождались, чо...
а клопег закончил на 10g
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379874
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп [игнорируется] 

Кстати теперь в оракле есть и аналог first, next и last строк с селекте, не надо с rownum плясать.
Тоже дождались, блеать.
...
Изменено: 03.05.2023, 20:57 - Горбатый ёж
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379875
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
акуеть вы тут умные.... , читаю и не понимаю нихт.... :(((
...
дед-пердед
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379878
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 20:56
[игнорируется]
IT-Клоп [игнорируется] 

Кстати теперь в оракле есть и аналог first, next и last строк с селекте, неинадт с rownum плясать.
Тоже дождались, блеать.
а мне нравился rownum. Он ведь одновременно и ROW_NUMBER() в некотором смысле реализует - которого не было поначалу в Transact SQL
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379881
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в 6.5 MS SQL не было и TOP. Как раз с ним начинал когда-то...
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379882
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:59
[игнорируется]
а мне нравился rownum
Да вопрос в получении допустим первых 10 строк. Всё прекрасно с rownum, пока нам не понадобится 10 первых строк отсортированного датасета.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379889
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 21:02
[игнорируется]
IT-Клоп  03.05.2023, 20:59
[игнорируется]
а мне нравился rownum
Да вопрос в получении допустим первых 10 строк. Всё прекрасно с rownum, пока нам не понадобится 10 первых строк отсортированного датасета.
там тоже был лайфхак - с производной таблицей. Это ещё на собеседованиях любили спрашивать, как щас помню.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379890
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто в Transact SQL не было и такого, поэтому rownum казался космосом даже при всех этих недостатках.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379891
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 21:07
[игнорируется]
просто в Transact SQL не было и такого, поэтому rownum казался космосом даже при всех этих недостатках.
Когда была актуальна десятка - это уже выглядело как костыль.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379895
IT-Клоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 21:08
[игнорируется]
IT-Клоп  03.05.2023, 21:07
[игнорируется]
просто в Transact SQL не было и такого, поэтому rownum казался космосом даже при всех этих недостатках.
Когда была актуальна десятка - это уже выглядело как костыль.
у мну тогда был MS SQL 6.5 и оракл 8, ещё под novell netware. И разница казалась огромной.
Потом в синтаксисе все более мене подравнялись и тут Аллах пересадил клопега на Sybase и он снова столкнулся с глубокой архаикой. Там даже udf не было года этак до 2005-го.
...
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379913
Фотография Ифрит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 21:02
[игнорируется]
IT-Клоп  03.05.2023, 20:59
[игнорируется]
а мне нравился rownum
Да вопрос в получении допустим первых 10 строк. Всё прекрасно с rownum, пока нам не понадобится 10 первых строк отсортированного датасета.
дак, а в чём... сортировка в инлайнвью, а поверх rownum...
...
Изменено: 03.05.2023, 21:24 - Ифрит
Рейтинг: 0 / 0
Вопрос по постгрес - про вставку дефолтных значений
    #379916
a.v.z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Клоп  03.05.2023, 20:48
[игнорируется]
здесь конечно тоже сиквенс и мы из него и извлекаем. Этот сиквенс можно штатно извлечь из системного каталога, сделав хак не столь грязным.
я всегда делаю сиквенс явным, указывая имя в своих стандартах именования объектов.
а потом вместо id serial в create table -
id int default nextval('имя секвенции'::regclass)
...
Рейтинг: 2 / 0
Нравится: IT-Клоп, Ифрит
Вопрос по постгрес - про вставку дефолтных значений
    #379921
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ифрит  03.05.2023, 21:24
[игнорируется]
сортировка в инлайнвью, а поверх rownum...
Не люблю обёртки на пустом месте.
...
Рейтинг: 1 / 0
Нравится: Ифрит
Вопрос по постгрес - про вставку дефолтных значений
    #379924
Фотография Ифрит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горбатый ёж  03.05.2023, 21:27
[игнорируется]
Ифрит  03.05.2023, 21:24
[игнорируется]
сортировка в инлайнвью, а поверх rownum...
Не люблю обёртки на пустом месте.
ну, да, есть такое
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Просто Трёп [закрыт для гостей] / Вопрос по постгрес - про вставку дефолтных значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (17): Анонимы (9), Шоколадный01, Дед-Папыхтет 1 мин., Брюквенные годы 2 мин., anonymous 3 мин., Три нитки 4 мин., IT-Клоп 4 мин., Гарыныч 7 мин., NSFuimus 8 мин.
Пользователи онлайн (24): Анонимы (12), Yandex Bot, Шоколадный01, Дед-Папыхтет 1 мин., Bing Bot 1 мин., Брюквенные годы 2 мин., anonymous 3 мин., zNomad 3 мин., Google Bot 4 мин., Три нитки 4 мин., IT-Клоп 4 мин., Гарыныч 6 мин., NSFuimus 8 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]