|
Генерация первичного ключа при записи из 1С во внешний источник данных |
☑ |
0
Лебовски
17.03.17
✎
12:01
|
Добрый день, товарищи гроссмейстеры! Ситуация вроде бы банальная: просто пишу данные из 1Ски во внешний источник данных (Oracle), вполне обычная таблица. Как устанавливать в таблице ключ (у нас обычное числовое поле int)? Хранить его в 1ске где-то и наращивать каждый раз? Или это на стороне Oracla как-то должно управляться? Подскажите, пожалуйста
|
|
1
Лефмихалыч
17.03.17
✎
12:05
|
я не верю в то, что оракл не умеет делать автоинкремент
|
|
2
Лебовски
17.03.17
✎
12:07
|
(1) Да наверное умеет. Просто когда в 1С не присваиваешь явно значение ключевому полю, туда ставится 0 и в следующий раз уже запись не уникальна. То есть где-то в Оракле какая-то галочка нужна для поля, и если в него ничего не пишется, оно само нарастает?
|
|
3
Лебовски
17.03.17
✎
12:16
|
Да, наверное, это как-то так делается
-- create table
CREATE TABLE MAPS
(
MAP_ID INTEGER NOT NULL ,
MAP_NAME VARCHAR(24) NOT NULL,
UNIQUE (MAP_ID, MAP_NAME)
)
--create sequence
CREATE SEQUENCE MAPS_SEQ;
-- create tigger using the sequence
CREATE OR REPLACE TRIGGER MAPS_TRG
BEFORE INSERT ON MAPS
FOR EACH ROW
WHEN (new.MAP_ID IS NULL)
BEGIN
SELECT MAP_ID_SEQ.NEXTVAL
INTO :new.MAP_ID
FROM dual;
END;
/
--enable the trigger
ALTER TRIGGER MAPS_TRG ENABLE ;
|
|
4
Неверный Параметр И
17.03.17
✎
12:22
|
(3) Ужс.
CREATE TABLE t (
ID NUMBER GENERATED ALWAYS AS IDENTITY,
Decsr VARCHAR2(100)
);
12c
|
|
5
Лебовски
17.03.17
✎
12:27
|
(4) Да уж, действительно :) Спасибо!
|
|
6
YFedor
17.03.17
✎
12:28
|
В 1С можно его хранить в справочнике:
а именно - создаем справочник с числовым кодом с автонумерацией.
В этом справочнике создаем элемент - код генерится автоматически - этот код и пишем в ключ в Оракле
|
|
7
Лефмихалыч
17.03.17
✎
12:29
|
(6) ни зачем не нужно это хранить в 1С
|
|
8
Лебовски
17.03.17
✎
12:34
|
(6) Да, мне нужно по сути просто некоторые записи переносить, создавать для этого лишний справочник ни к чему, если можно разрулить на Оракле
|
|