Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
Вопрос сложный :) Есть в MS SQL у полей таблиц следующее свойство: IDENTITY (1, 1) Если при создании таблицы мы указываем для столбца помимо типа данных свойство IDENTITY, то для этой колонки значения будут генерироваться автоматически, в данном конкретном случае - начиная с 1, с инкрементов м единицу. Ввод данных в эти колонки НЕВОЗМОЖЕН! Т.е. мы создаем таблицу CREATE TABLE Product_Info (Product_ID smallint IDENTITY(1, 1) NOT NULL, Product_Name char(20) NOT NULL) И делаем вставку Insert Product_Info Values("имя"); И после этого Product_ID будет вставлен автоматом, а Product_Name получит значение "имя" Есть ли аналоги в PostgreSQL? Единственное что я пока нашел - тип serial Создаем таблицу: CREATE TABLE Product_Info (Product_ID SERIAL, Product_Name char(20) NOT NULL) Вставляем значения: INSERT INTO Product_Info Values("имя"); И нифига это не сработает, будет попытка вставить "имя" в Product_ID, а задача требует иного подхода. Работать будет следующее: INSERT INTO Product_Info Values(default, "имя"); Но моя задача перевести конструкцию вида INSERT INTO Product_Info SELECT "имя" Уточняю вопрос: есть ли в постгри автоинкрементные поля, в которые невозможно вручную вводить значения? Системное поле OID не подходит, мне требуется произвольное имя для инкрементного столбца. Всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:12 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
Либо INSERT INTO Product_Info (Product_Name) Values("имя"); либо через RULE разрулите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:16 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
ZashibisВвод данных в эти колонки НЕВОЗМОЖЕН! SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF } ZashibisУточняю вопрос: есть ли в постгри автоинкрементные поля, в которые невозможно вручную вводить значения?Нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:19 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
СОбственно загвоздка у меня организовалась на запросе: Insert _1SCONST_NEW select OBJID,ID,DATE,VALUE,DOCID,TIME,ACTNO,LINENO_,TVALUE from _1SCONST а в таблице _1SCONST_NEW первый столбец ROW_ID, как раз таки автоинкрементный, остальные столбцы совпадают. MS SQL все правильно разруливает, вставляет куда надо, а постгри столбец OBJID вставляет в этот самый ROW_ID. Поскольку я пишу универсальные правила подмены запросов, то задача тут не простая. Можно надеяться, что ребята от 1С всегда сопоставляют столбцы с одинаковыми именами и делать подмену вида: Insert INTO _1SCONST_NEW (OBJID,ID,DATE,VALUE,DOCID,TIME,ACTNO,LINENO_,TVALUE) select OBJID,ID,DATE,VALUE,DOCID,TIME,ACTNO,LINENO_,TVALUE from _1SCONST вытаскивая имена из запроса Select, но все равно это как-то коряво :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:25 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
to drunk2: 1) В 1С этот флаг утановлен так, что запись невозможна 2) Очень жаль, если это так :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:26 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
ZashibisВопрос сложный :) Есть в MS SQL у полей таблиц следующее свойство: IDENTITY (1, 1) Если при создании таблицы мы указываем для столбца помимо типа данных свойство IDENTITY, то для этой колонки значения будут генерироваться автоматически, в данном конкретном случае - начиная с 1, с инкрементов м единицу. Ввод данных в эти колонки НЕВОЗМОЖЕН! Ответ зато простой Нет. В PG нет, и судя по всему не предвидится (патч для 8.3 отправлен в отказник ) поля IDENTITY. По одной простой причине - внутренней противоречивости подхода. ЗЫ А чой-то невозможен? Вполне возможен. Без этого оно бы не жило нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 16:46 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
Zashibis1) В 1С этот флаг утановлен так, что запись невозможнаТогда сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 17:18 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
Спасиб конечно, но у меня вопрос больше по постгри, чем по 1С :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 17:20 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
По постгри Вам уже ответили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 17:22 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
Хоть бы кто-нибудь уже написал в FAQ, что эта СУБД называется "Постгрес" или "Постгрескьюэл", а не так, как ее пытаются называть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2007, 22:38 |
|
||
|
Автоинкрементные поля
|
|||
|---|---|---|---|
|
#18+
drunk2 ZashibisУточняю вопрос: есть ли в постгри автоинкрементные поля, в которые невозможно вручную вводить значения?Нетнетрудно сделать поле, (повесив триггер, вместо DEFAULT-а) которое будет плевать на попытку ввода в него чего либо, кроме генеримого триггером значения. но вам-то нужно ить не это. вам нужна специфическая способность (какой-то левой субд) опускать поле из полного списка полей таблицы. С одной стороны, ленивый инсерт без перечисления всех полей приемника - уже не комильфо (за редким исключением, когда это, тем не менее, удобно более, чем чревато), а уж ленивый инсерт с использованием фичи конкретного долба... (простите), инструмента - .... (многабукф, все - нецензурные). но если вам так хочется именно странного - навесьте на табличку руле (т.е. ежели глобально - то слепите полу-автомат, который увешает ваши таблички рулями). и все станет пучком,... с вашей т.з.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2007, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34735546&tid=2005140]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 376ms |

| 0 / 0 |
