powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite trigger дата
9 сообщений из 9, страница 1 из 1
sqlite trigger дата
    #37192008
jaguar_sea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Пытаюсь написать триггер который бы добавлял в таблицу значения взяты и модифицированные из другой таблицы. Конкретнее, не получается изменить дату... Код у меня вот такой...
INSERT INTO tbl_credinfo VALUES (new.id, strftime('%Y-%m-%d',new.dayofpayprimary,'1 month' ),63000,59000,860,4000);
Хочу сделать, козалось бы простую вещь, взять дату из одной таблицы, добавить к ней один месяц и вставить в другую, но не получается... Помогите пожалуйста, подскажите что я делаю не так....
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37192806
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:

Код: plaintext
1.
INSERT INTO tbl_credinfo SELECT new.id, strftime('%Y-%m-%d',new.dayofpayprimary,'+1 months'),'6300','5900','860','4000' FROM new;
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37193500
jaguar_sea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
new - это не таблица... Я пишу триггер... Вот весь код...
CREATE TRIGGER [credit_trigger]
AFTER INSERT ON [tbl_credid]
FOR EACH ROW
BEGIN

INSERT INTO tbl_credinfo VALUES (new.id,strftime('%Y-%m-%d',new.dayofpayprimary,'1 month'),63000,59000,860,4000);

END
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37193508
jaguar_sea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к сожалению, не получается правильно выполнить даже следующий запрос...
INSERT INTO tbl_credinfo VALUES (new.id,new.dayofpayprimary,63000,59000,860,4000);
при этом значение поля id из одной таблицы в другую переносится без проблем, а вот с датой выходит какой то косяк... Значение во второй таблице остается пустым... Типы данных в рабочих столбцах двух таблиц одинаковые...
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37193869
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jaguar_sea, вы вообще читать-то умеете? Где вы взяли, что инструкция:

INSERT INTO tbl_credinfo VALUES (new.id,strftime('%Y-%m-%d',new.dayofpayprimary,' 1 month '),63000,59000,860,4000);

будет прибавлять один месяц, если в официальной документации указано, что нужно прибавлять месяц так:

...strftime('%Y-%m-%d',new.dayofpayprimary,' + 1 month s ')...

Что вы хотите добиться от приведенного триггера, что бы он каждый раз добавлял к уже ранее добавленным данным все данные из одной таблицы в другую либо только новые данные? Если только новые, то можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE "new" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "dayofpayprimary" TEXT);
CREATE TABLE "tbl_credinfo" ("id" INTEGER, "srok" TEXT, "t1" TEXT, "t2" TEXT, "t3" TEXT, "t4" TEXT);
CREATE TRIGGER "credit_trigger" AFTER INSERT ON new 
BEGIN 
INSERT INTO tbl_credinfo SELECT new.id, strftime('%Y-%m-%d',new.dayofpayprimary,'+1 months'),'6300','5900','860','4000' FROM new WHERE new.id = last_insert_rowid(); 
END;
INSERT INTO new ("dayofpayprimary") VALUES ('2001-10-19');
INSERT INTO new ("dayofpayprimary") VALUES ('2002-11-19');
INSERT INTO new ("dayofpayprimary") VALUES ('2008-08-10');
INSERT INTO new ("dayofpayprimary") VALUES ('2007-02-08');
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37197138
jaguar_sea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понимаю почему вы из new делаете таблицу...
Вот мои таблицы.
CREATE TABLE [tbl_credid] ([id] INTEGER PRIMARY KEY NOT NULL,[nameofcred] TEXT NULL,[principaldebt] REAL NULL,[dayofpayprimary] DATE NULL,[interest] REAL NULL)
CREATE TABLE [tbl_credinfo] ([idcred] INTEGER NULL,[dayofpay] date NULL,[residue_before] real NULL,[residue_after] real NULL,[interest] REAL NULL,[payment] REAL NULL,[days] INTEGER NULL)
А вот триггер.
CREATE TRIGGER [credit_trigger]
AFTER INSERT ON [tbl_credid]
FOR EACH ROW
BEGIN

INSERT INTO tbl_credinfo VALUES (new.id,strftime('%Y-%m-%d',new.dayofpayprimary,'+1 months'),63000,59000,860,4000,31);

END

А что касается "+", проверял на strftime('%Y-%m-%d','2011-03-08','1 months') значение спокойно увеличивается...
Я же говорю дело именно в new.dayofpayprimary. Вот с ним как раз я и не пойму что не так...
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37197384
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jaguar_seaНе понимаю почему вы из new делаете таблицу...

jaguar_sea, это лишь пример, показывающий как решить вашу задачу, название таблиц примерное, но видимо вы либо не понимаете либо не хотите понимать.
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37197397
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, вы сами указали, что у вас есть таблица new:

jaguar_sea ...INSERT INTO tbl_credinfo VALUES ( new.id ,strftime('%Y-%m-%d', new .dayofpayprimary,'1 month'),63000,59000,860,4000)....
...
Рейтинг: 0 / 0
sqlite trigger дата
    #37197422
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если же вы хотите использовать в треггере "NEW.column" и "OLD.column", тогда нужно в самом триггере писать условия:

Код: plaintext
1.
2.
3.
CREATE TRIGGER update_customer_address UPDATE OF address ON customers 
  BEGIN
    UPDATE orders SET address = new.address WHERE customer_name = old.name;
  END;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite trigger дата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]