Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Alter insert в текущую же таблицу / 17 сообщений из 17, страница 1 из 1
06.06.2015, 00:23
    #38977957
Kos-2010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Доброе время суток форумчане.

Есть таблица «Words» с полями:
Код: sql
1.
2.
3.
«id» «word»  
  1  смелый
  2  храбрый


Я создал перекрестную таблицу «Synonym», в ней заполняются 4 поля («id» «word» «words_id» «synonym_id»).
Есть «Synonym»
Код: sql
1.
2.
3.
«id» «word» «words_id» «synonym_id»
 1   смелый      1          2
 2   храбрый     2          1


Я хотел написать в «Synonym» триггер на вставку «alter insert».
Чтоб при вставки в «Synonym» первой строки (с ссылкой), автоматически в «Synonym» вставлялась вторая строка (см. выше).
Если я просто напишу в триггере запрос на вставку, пойдет цикл.
- Можно конечно в табл. «Synonym» создать еще поле, и заполнять его при вставке строки с помощью триггера, а в самом триггере проверять статус этого поля.
- Ну можно еще через приложение вставлять эту вторую строку, но хотелось бы это всетаки с помощью БД делать

Но я думаю есть легче вариант...
Или как-то можно по-другому решить эту проблему?

Заранее спасибо
P.S.
Сразу может вставляться несколько новых записей, на все, нужно подобавлять конвертированную стоку
...
Рейтинг: 0 / 0
06.06.2015, 00:29
    #38977961
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Kos-2010Или как-то можно по-другому решить эту проблему?
Процедуру сделай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 00:41
    #38977970
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Kos-2010Я создал перекрестную таблицу «Synonym», в ней заполняются 4 поля («id» «word» «words_id» «synonym_id»).Зачем
Kos-2010Или как-то можно по-другому решить эту проблему?
Код: sql
1.
WHEN -803 DO
...
Рейтинг: 0 / 0
06.06.2015, 00:44
    #38977972
Kos-2010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Dimitry Sibiryakov,

Хорошо,
это значит я вставляю первую строку в таблицу «Synonym», из триггера "After insert", вызываю процедуру, которая вставляет вторую строку?
Тогда как мне отработать процедурой всего один раз (на каждую строку)?

Или

процедуре просто передавать "id", а она сможет сама вставить в таблицу «Synonym» эти 2 ДВЕ строки ?
...
Рейтинг: 0 / 0
06.06.2015, 08:27
    #38978039
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Kos-2010,

добавь служебное поле, которое показывает, откуда идет вставка: из триггера или нет.
...
Рейтинг: 0 / 0
06.06.2015, 11:48
    #38978068
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
А ещё лучше - забей. Синонимичность не коммутативна. То есть если одно слово - синоним
другого, то не факт, что другое - синоним первого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 12:26
    #38978090
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Dimitry Sibiryakov> То есть если одно слово - синоним другого, то не факт, что другое - синоним первого.
Оба-на!!! 8O
Пример можно?..

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 12:59
    #38978109
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
zirraПример можно?..
"Козёл" - синоним "мужика". "Мужик" - не синоним "козла".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 13:01
    #38978110
Kos-2010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
wadmanKos-2010,

добавь служебное поле, которое показывает, откуда идет вставка: из триггера или нет.
Уже появился еще один сторонник дополнительного поля (наверное это будет проще написания процедуры)
...
Рейтинг: 0 / 0
06.06.2015, 13:01
    #38978111
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Dimitry Sibiryakov> "Козёл" - синоним "мужика".
Глупость... Откровенная...

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 13:04
    #38978112
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
zirraГлупость... Откровенная...
Можешь самостоятельно вспомнить любые другие понятия из охватывающих множеств или эвфемизмов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 13:07
    #38978114
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Dimitry Sibiryakov> Можешь самостоятельно вспомнить любые другие понятия из охватывающих множеств или эвфемизмов.
Нет, не могу...
И, кстати, эвфемизм - далеко не то же самое, что синоним ...

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 13:24
    #38978121
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
zirraНет, не могу...
Как насчёт "дождь" ==> "осадки"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 15:37
    #38978163
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Dimitry Sibiryakov> Как насчёт "дождь" ==> "осадки"?

Никак. Это не синонимы.
Термины подучи, лингвист
ты наш, неприкаянный.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.06.2015, 16:22
    #38978177
Kos-2010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
И как это еще топик не закрыли способностей лингвистики разной :-)

Создал внуреннюю процедуру по совету Dimitry Sibiryakov
Незнаю, но пока работает
Входными парамерами являются: "id" слова "зачинщика", и списка синонимов, а далее она сама делает ссылки друг на друга
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
create or alter procedure SP_ADD_SYNONYMS (
    IN_WORD_ID integer,
    IN_LIST_SYNONYM varchar(32000) character set WIN1251)
as
declare variable VAR_SYNONYM varchar(30);
declare variable VAR_SYNONYM_ID integer;
declare variable VAR_ Word varchar(30) character set WIN1251;
begin
--format variable "IN_LIST_SYNONYM" (ARRAY) must be: (~1628~1659~1456~1627~)
  select mt. Word
    from Words mt
      where mt.ID = :IN_WORD_ID
        into :VAR_ Word;

  for select ID, Word
        from Words
          where :IN_LIST_SYNONYM CONTAINING '~'||"ID"||'~'
          into :VAR_SYNONYM_ID,
               :VAR_SYNONYM  do
  begin
    insert into SYNONYM (Word, Word_ID, SYNONYM_ID)
      values (:VAR_ Word, :IN_WORD_ID, :VAR_SYNONYM_ID);

     insert into SYNONYM (Word, EW1_ID, SYNONYM_ID)
       values (:VAR_SYNONYM, :VAR_SYNONYM_ID, :IN_WORD_ID);
  end
  suspend;
end^
...
Рейтинг: 0 / 0
08.06.2015, 13:18
    #38978944
Alter insert в текущую же таблицу
Синонимичность зависит от контекста и явно нелинейна:

У понятия "смелый" есть еще одно значение, синонимом которого будет не "храбрый", а "нескромный". При этом "храбрый" не является синонимом "нескромный" никогда: "Екатерина, к слову, надела очень смелое платье, которое оголяло спину, неожиданно «украшенную» лямками бюстгальтера".

Так же "смелый" иногда упоминается в значении "рискованный", и к храброму это тоже слабо применимо...

Смелый - это кто не боится. Храбрый - это кто действует решительно. Близко, да, потому как храбрый часто действует смело, но вот смелый не всегда действует храбро :)
...
Рейтинг: 0 / 0
08.06.2015, 14:45
    #38979082
dennis-r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alter insert в текущую же таблицу
Антон КарасёвСинонимичность зависит от контекста и явно нелинейна...Это различные понятия, выражаемые одним и тем же словом (по сути - омонимы). У каждого понятия свой набор синонимов. В правильных словарях это обычно выделяется отдельными параграфами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 смелый 
1.Не знающий страха, не боящийся опасностей; отважный, храбрый.
 отт.  Выражающий бесстрашие, отвагу, храбрость.
 отт.  Совершаемый с отвагой, храбростью.
2.  перен.  Не боящийся трудностей.
отт. Преисполненный смелости, дерзания.
3.  перен.  Поднимающий, затрагивающий острые, злободневные вопросы.
4.  перен.  Заключающий в себе что-либо новое, оригинальное, выделяющийся чем-либо необычным.
 отт. разг.  Выходящий за границы принятого; нескромный.

У ТС'а, насколько я вижу, этот нюанс не учтён.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Alter insert в текущую же таблицу / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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