powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Синхронизация таблиц из разных БД.
25 сообщений из 37, страница 1 из 2
Синхронизация таблиц из разных БД.
    #38648471
Здравствуйте друзья. Не без вашей помощи написал триггер на синхронизацию таблиц в двух разных базах данных.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION dorojnaya_set1_update()
  RETURNS trigger AS
$BODY$
   BEGIN 
         perform dblink_connect('hostaddr=***.***.**.*** port=5432 dbname=***** user=alimuradov password=******');
	 perform dblink_exec(format('insert into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', new.id, new.the_geom, new.objectcode, new.objectkey, new.objectid));	 	
         perform dblink_disconnect(); 
       RETURN NEW;
   END;
$BODY$



Но триггер переносит только вновь создаваемые объекты. При удалении объектов я так понимаю надо будет писать новый триггер, который будет срабатывать на delete.

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

Вроде бы надо только поправить кусок кода
Код: sql
1.
perform dblink_exec(format('insert into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', new.id, new.the_geom, new.objectcode, new.objectkey, new.objectid));



Просто заменить в нем insert на delete?
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648496
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовПросто заменить в нем insert на delete?

и new на old
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648514
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитав ваш другой пост, позволю себе потроллить:

Это если вы не напишете
delete into dorojnaya_set (...) values(...)
по причине лени читать документацию xD
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648530
Hawkmoon,

Ошибка PostGIS при удалении объектов: ОШИБКА: ошибка синтаксиса (примерное положение: "into")
КОНТЕКСТ: Error occurred on dblink connection named "unnamed": could not execute command.
SQL-оператор: "SELECT dblink_exec(format('delete into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', old.id, old.the_geom, old.objectcode, old.objectkey, old.objectid))"
функция PL/pgSQL dorojnaya_set_delete(), строка 4, оператор PERFORM
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648532
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовЗдравствуйте друзья. Не без вашей помощи написал триггер на синхронизацию таблиц в двух разных базах данных.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION dorojnaya_set1_update()
  RETURNS trigger AS
$BODY$
   BEGIN 
         perform dblink_connect('hostaddr=***.***.**.*** port=5432 dbname=***** user=alimuradov password=******');
	 perform dblink_exec(format('insert into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', new.id, new.the_geom, new.objectcode, new.objectkey, new.objectid));	 	
         perform dblink_disconnect(); 
       RETURN NEW;
   END;
$BODY$



Но триггер переносит только вновь создаваемые объекты. При удалении объектов я так понимаю надо будет писать новый триггер, который будет срабатывать на delete.

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

Вроде бы надо только поправить кусок кода
Код: sql
1.
perform dblink_exec(format('insert into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', new.id, new.the_geom, new.objectcode, new.objectkey, new.objectid));



Просто заменить в нем insert на delete?

тормознее реализацию сложно представить. Перформанс совсем-совсем не важен?
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648543
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наридан, вам сколько лет?
Как можно человека, не знающего синтаксис основного SQL, вообще подпускать к программированию баз данных?
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648544
Ivan Durak,
С моими знаниями мне бы для начало лишь бы работало.
Чем же перфоманс так плох поясните пожалуйста.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648551
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовIvan Durak,
С моими знаниями ...

С вашими знаниями:
Нариман АлимурадовSELECT dblink_exec(format(' delete into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)

у вас ничего работать не будет.
Начните с изучения основ SQL, а именно, синтаксиса select/update/delete
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648569
Hawkmoon,

С базовыми основами как SELECT, UPDATE, DELETE я знаком. Сколько мне лет неважно на самом деле. Важно то, что мне приходится порой решать задачи в той предметной области специалистом в которой я не являюсь, и цели стать таковым тоже нету, ибо зачем инженеру медтехнику SQL??? Периодически приходится сталкиваться с Базами Данных, мне вообще это все интересно и нравится, да вот времени в обрез, поверьте мне, было бы время непременно более глубже бы изучил.

Я просто обратился за помощью, если в вашей компетенции помочь, помогите пожалуйста если нет и на добром слове спасибо. А ругать не надо((
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648579
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовHawkmoon,
ибо зачем инженеру медтехнику SQL
Чтобы делать что-то на SQL, не?

Я просто обратился за помощью, если в вашей компетенции помочь....
А ругать не надо((
Это в компетенции любого студента 2 курса профильного вуза.
Если вы не учились - то вас именно что надо ругать. Возможно, даже gbplbnm.

Если вы считаете, что за вами тут будут таскать горшок и подтирать попку - извините, у меня другие способы воспитания сынков.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648585
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того:
если вы не можете в гугле выяснить синтаксис команды SQL "delete", то вам вообще не место за компьютером по причине полной профессиональной непригодности .

И это подтвердит любой из спецов тут.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648592
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовС базовыми основами как SELECT, UPDATE, DELETE я знаком

Нариман Алимурадовformat('delete into dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)

Садись, два. Домашнее задание не выполнено.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648618
HawkmoonБолее того:
если вы не можете в гугле выяснить синтаксис команды SQL "delete", то вам вообще не место за компьютером по причине полной профессиональной непригодности .

И это подтвердит любой из спецов тут.

Я извиняюсь. По профессии я инженер-медтехник. Занимаюсь монтажом, ремонтом и продажами медоборудования. Я прекрасно чувствую себя в этой сфере. О каком несоответствии профессиональной негодности идёт речь?? Или вы с первой попытке самостоятельно сможете смонтировать рентген аппарат, или томограф?

Еще раз я не претендую на звание спец в области SQL, мне это не надо . Выполнять простейшие запросы я могу, и выполняю. Пишу простые скрипты. но иногда приходится в авральном режиме решать какую то нетривиальную задачу. Синхронизация между базами данных для меня как раз такая задача. Вот потому я и обращаюсь к вам специалистам.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648629
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовПишу простые скрипты.
Вы их не пишите.
Вы ведете себя в духе дуры-блондинки - читаете первое сообщение, дальше одни эмоции и только.
Если вы перестанете оправдываться, возьмете себя в руки и прочитаете внимательно, что уже было сказано, то поймете, что все советы, ответы и указания уже даны.
(впрочем, я уверен, что до фразы "вы перестанете оправдываться" вы не дочитаете и тем более не поймете из-за "дуры-блондинки". Тест, так сказать.)


Впрочем, воспитывать двоечника, который не понимает даже тумаков, мне больше неохота.
Удачи в дальнейшем общении.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648633
Hawkmoon,

и вам добра.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648701
Hawkmoon,

упс.. Простите за невнимательность. Поправил delete into на delete from, однако все равно при удалении объектов выдается ошибка.

авторОШИБКА: ошибка синтаксиса (примерное положение: "(")
КОНТЕКСТ: Error occurred on dblink connection named "unnamed": could not execute command.
SQL-оператор: "SELECT dblink_exec(format('delete from dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', old.id, old.the_geom, old.objectcode, old.objectkey, old.objectid))"
функция PL/pgSQL dorojnaya_set_delete(), строка 4, оператор PERFORM
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648705
> Садись, два.

файлы в базе данных давно перестал хранить? Буквари кури, школота. Рано тебе замечания делать. Лет через десять, возможно, дорастешь. Если дорастешь.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648744
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовHawkmoon,

упс.. Простите за невнимательность. Поправил delete into на delete from, однако все равно при удалении объектов выдается ошибка.

авторОШИБКА: ошибка синтаксиса (примерное положение: "(")
КОНТЕКСТ: Error occurred on dblink connection named "unnamed": could not execute command.
SQL-оператор: "SELECT dblink_exec(format('delete from dorojnaya_set (id, the_geom, objectcode, objectkey, objectid) values (%s, CAST(%L AS geometry), %L, %L, %L)', old.id, old.the_geom, old.objectcode, old.objectkey, old.objectid))"
функция PL/pgSQL dorojnaya_set_delete(), строка 4, оператор PERFORM

формат delete:

delete from sometable where (набор условий по которым удалять аналогичный по синтаскису тому что в select используется);

values() там не предусмотрены

вам просто по id= удалять надо в вашем триггере
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648759
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э, уважаемый,

А напомните, куда вас послали в том треде, где мы обсуждали хранение файлов в БД?
У вас ники меняются, а так - рано вам напоминать мне про холиварные вопросы, ага.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648772
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благо, что выход с промывкой кэшей файлами я нашел, подняв параллельно два инстанса с разными областями ОЗУ. Но это к вам не относится, мистер тролль.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648787
Maxim Boguk, то есть, как то так?
Код: sql
1.
perform dblink_exec(format('delete from dorojnaya_set where id=...)'));



Но какую выборку по id делать, удаляться могут как один так и несколько записей.
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38648823
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нариман Алимурадов,

Эм. А сколько у Вас записей (одна, ни одной, несколько) удаляется при срабатывании триггера ON DELETE на каждую строку?
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38649027
/\/\/\/\/\/\, теперь понятно. За одну транзакцию значит удаляется одна запись, я это все никак не мог понять.
А как заставить удалить текущую запись?

Что то вроде curent должно быть?
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38649129
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман Алимурадов,

postgresql+trigger+for+each+row
...
Рейтинг: 0 / 0
Синхронизация таблиц из разных БД.
    #38649191
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нариман АлимурадовЕще раз я не претендую на звание спец в области SQL, мне это не надо . Выполнять простейшие запросы я могу, и выполняю. Пишу простые скрипты. но иногда приходится в авральном режиме решать какую то нетривиальную задачу. Синхронизация между базами данных для меня как раз такая задача. Вот потому я и обращаюсь к вам специалистам.так специалисты и ответили в предыдущей вашей теме - надо использовать schema, view, function, grant. а решать вашу задачу через несколько баз, тригеры и dblink не нужно.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Синхронизация таблиц из разных БД.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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