Страница 1 из 1

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

Добавлено: 20 мар 2007, 16:59
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
Как можно скопировать данные?

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

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

Добавлено: 20 мар 2007, 18:06
vvozi
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.

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

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

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

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

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

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

Добавлено: 21 мар 2007, 13:22
_Mad_
А может просто длина varchar полей разная?

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

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

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