Вставка данных метод insert into Table select ...from NTable

Модераторы: kdv, CyberMax

Ответить
vvozi
Сообщения: 20
Зарегистрирован: 25 май 2006, 10:25

Вставка данных метод insert into Table select ...from NTable

Сообщение vvozi » 20 мар 2007, 16:59

Здравствуйте!
Мне нужно вставить 1000 записей из таблицы, куда скопированы данные из Word. Все поля Type Varchar(..). Совпадают по структуре с таблицей-получателем( но в ней есть поля Integer). Primary Key Not Null -автоинкркментное поле TovarTovar_Id и FK по таблице источнику.
Использую SQL

insert into tovar (NAme_tovar,Marka,ed_izm,kategoria,Primecanie)
select n1,n2,n3,n5,n7 from tovar5
выполняю в IBExp.
Не проходит.Данные не копируются.
IB2007.
Построен триггер для вставки (для авотинкрем.поля Tovar_ID)

Код: Выделить всё

CREATE TRIGGER TOVAR_BI FOR TOVAR
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.TOVAR_ID IS NULL) THEN
    NEW.TOVAR_ID = GEN_ID(GEN_TOVAR_ID,1);
END
Как можно скопировать данные?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 20 мар 2007, 17:42

Commit делаешь?
Данные в tovar5 точно есть?
Если ответ на оба вопроса "да" - то ты чего-то не договариваешь, и телепатор не ощущает, чего именно.

vvozi
Сообщения: 20
Зарегистрирован: 25 май 2006, 10:25

Re: Вставка данных метод insert into Table select ...from NT

Сообщение vvozi » 20 мар 2007, 18:06

vvozi писал(а):Здравствуйте!
Мне нужно вставить 1000 записей из таблицы, куда скопированы данные из Word. Все поля Type Varchar(..). Совпадают по структуре с таблицей-получателем( но в ней есть поля Integer). Primary Key Not Null -автоинкркментное поле TovarTovar_Id и FK по таблице источнику.
Использую SQL

insert into tovar (NAme_tovar,Marka,ed_izm,kategoria,Primecanie)
select n1,n2,n3,n5,n7 from tovar5
выполняю в IBExp.
Не проходит.Данные не копируются.
IB2007.
Построен триггер для вставки (для авотинкрем.поля Tovar_ID)
CREATE TRIGGER TOVAR_BI FOR TOVAR
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.TOVAR_ID IS NULL) THEN
NEW.TOVAR_ID = GEN_ID(GEN_TOVAR_ID,1);
END

Как можно скопировать данные?

Сообщение SQL Edit
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

Re: Вставка данных метод insert into Table select ...from NT

Сообщение Slavik » 21 мар 2007, 09:33

vvozi писал(а):Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
У меня чаще всего эта ошибка вылазит, когда я ошибочно пытаюсь строку запихнуть в числовое поле :oops: (например, забыв при создании таблицы в IBExpert'е указать тип поля varchar(...)).

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: Вставка данных метод insert into Table select ...from NT

Сообщение WildSery » 21 мар 2007, 11:49

vvozi писал(а):Сообщение SQL Edit
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
Ну и что тебе тут не понятно-то? Всё английским по белому.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 21 мар 2007, 12:17

Открой таблицу-исходник (в твоем случае Tovar5) в IB Expert'е и перейди к последней записи (Ctrl+End). Узнаешь, на какой из них возникает ошибка.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 21 мар 2007, 12:24

CyberMax писал(а):Узнаешь, на какой из них возникает ошибка.
Я ставлю на то, что ошибка при вставке этой выборки в TOVAR, несоответствие типа поля.

_Mad_
Сообщения: 10
Зарегистрирован: 12 окт 2006, 16:15

Сообщение _Mad_ » 21 мар 2007, 13:22

А может просто длина varchar полей разная?

vvozi
Сообщения: 20
Зарегистрирован: 25 май 2006, 10:25

Re: Вставка данных метод insert into Table select ...from NT

Сообщение vvozi » 21 мар 2007, 14:28

Коллеги всем спасибо.
Все было.
Решение нашел так:
Копирую по частям ( where pole=' значение') Имеется таблица родитель FK='значение'
С таким решением копирую по частям.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 21 мар 2007, 15:48

WildSery писал(а):Я ставлю на то, что ошибка при вставке этой выборки в TOVAR, несоответствие типа поля.
vvozi писал(а):Все поля Type Varchar(..). Совпадают по структуре с таблицей-получателем( но в ней есть поля Integer).
:)
vvozi писал(а):Решение нашел так:
Копирую по частям ( where pole=' значение') Имеется таблица родитель FK='значение'
С таким решением копирую по частям.
Не понял?

Ответить