Вставка через...

ASPU1
Дата: 10.08.2004 10:00:55
Поможите если можите! Есть две таблицы(например table1 и table2), интересующие поля в которых EQ_ID, Manufacturer в первой и Man_id, Shortname во второй. Есть форма в которой пользователь выбирает наименование продукции и Shortname производителя. Надо чтобы при вставке из формы в первую таблицу вставлялось значение поля Man_id соответствующее Shortname, а во вторую не вставлялось вообще ничего. (Вставка идет через view я вляющееся объединением этих двух таблиц) Написал rule:
ON INSERT TO table1 DO INSTEAD INSERT INTO table2 SELECT man_id FROM table2 WHERE shortname = new.shortname но чего-то не работает видимо я не очень понял работу NEW, а может чего ещЁ-))). Заранеее спасибо.
Sad Spirit
Дата: 10.08.2004 10:15:41
если вставка через view, то почему правило висит на table1?..
ASPU1
Дата: 10.08.2004 11:23:29
Звиняйте, очепятка вышла. Оно действительно на view
vadimm
Дата: 10.08.2004 12:06:55
Cколько ни пытался, ничего хорошего с rule у меня не получилось, не понимает он new i old.
Сделай то же на trigger before post и всё будет OK.
ASPU1
Дата: 10.08.2004 13:18:51
Не пользовался еще триггерами, если можно поподробнее объясни
Sad Spirit
Дата: 10.08.2004 23:19:02
ASPU1
Звиняйте, очепятка вышла. Оно действительно на view

Ну, сделай над собой усилие, приведи реальный код, а не краткое его изложение.


vadimm
Cколько ни пытался, ничего хорошего с rule у меня не получилось, не понимает он new i old.


как бы это помягше... не вводи людей в заблуждение.
vadimm
Дата: 10.08.2004 23:39:07
Спорить не буду, может и не прав, пример сейчас не вспомню, но трабла была.
И, как говорится, зуб теперь на rules имею, но надо будет ещё раз попробовать как-нибудь.
ASPU1
Дата: 12.08.2004 12:35:09
Sad Spirit
Ну, сделай над собой усилие, приведи реальный код, а не краткое его изложение.

Извини,Печальный, но что ты подразумеваешь под реальным кодом? Правило приведено реально, без цензуры и сокращений.
assa
Дата: 13.08.2004 13:03:56
ASPU1
Написал rule:
ON INSERT TO table1 DO INSTEAD INSERT INTO table2 SELECT man_id FROM table2 WHERE shortname = new.shortname


ASPU1
Оно действительно на view


А подумать?

__
Вот примерно так вешается руле НА вид, обозванный "tree_leaf"
:
CREATE OR REPLACE RULE "_INSERT" AS
  ON INSERT TO tree_leaf DO INSTEAD
 (INSERT INTO tree 
	(id,
	 pid,
	 )
  VALUES 
	(new.id,
	 new.pid,
	 );
 INSERT INTO leaf 
	(id, 
	date,
	name,
	description,
	value,
	)
 VALUES (
	new.id,
	new.name,
	new.description,
	new.value,
	);
  ); 
ASPU1
Дата: 13.08.2004 14:56:58
ДА! Оно действительно на вью висит и в такой форме как ты приводишь обязательно бы работало,НО требуется выполнение дополнительного условия и именно ЭТО не получается. Причем если значение поля shortname фактически вставляется, то все тоже работает, но надо сделать так чтобы оно выбиралось но не вставлялось. УХ. Изврат конечно но как это реализовать попроще не придумал.