Страница 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.
У меня чаще всего эта ошибка вылазит, когда я ошибочно пытаюсь строку запихнуть в числовое поле

(например, забыв при создании таблицы в 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='значение'
С таким решением копирую по частям.
Не понял?