![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 26.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję zmodyfikować procedurę w sqlu która aktualizowałaby mi dane w kilku tabelach ale z pewnymi warunkami:
- ilość tabel córek może się zmieniać - NrOferty składa się z np AA00001 czyli dwie pierwsze to zawsze litery które określają właściciela oferty Chciałbym zrobić tak aby była np dodatkowa tabela która przechowywałaby nazwę tabeli córki i te dwie pierwsze litery np AA, CG, HH itp. Zamysł ogólnie jest taki aby po każdej zmianie danych w tabeli matce, automatycznie aktualizowały się tabele córki ale tylko te tabele w których te oferty są. czyli: tabela corka1 ma oferty AA00001, BC00001, NN00003 tabela corka2 ma oferty AA00005, BC00003, NN00006 tabela corka3 ma oferty AA00001, BC00006, NN00009 i teraz zmienia sie oferta AA00001 czyli aktualizuje się tabela corka1 i corka3 zmienia się oferta AA00005 czyli aktualizuje się tabela corka2 Podsumowując: - jedna tabela matka zawierająca wszystkie oferty - zmienna ilość tabel córek które będą zawierać oferty z tabelki matki ale spełniające określone warunki czyli określone prefiksy - procedura która to wszystko obsłuży bez grzebaania w niej za każdym razem gdy pojawi sie nowa tabela córka. Czyli taka która pobierze nazwę tabeli córki i prefixy oferty które mają się w niej znaleźć czy ktoś mi pomoże? DROP PROCEDURE `syncing`// CREATE DEFINER=`root`@`localhost` PROCEDURE `syncing`(IN id_new bigint(20)) BEGIN REPLACE INTO oferty_kopia (`IdOferty`, `NrOferty`, `TypUmowy`, `TypTrans`, `Rynek`, `TypNier`, `Kraj`, `Wojewodztwo`, `Gmina`, `Powiat`, `Miejscowosc`, `Osiedle`, `Ulica`, `Powierzchnia`, `RodzWlas`, `PowDzialki`, `RodzWlasDzialki`, `Pietro`, `WysBud`, `LiczbaPok`, `RokBudowy`, `Ogrzewanie`, `StanTech`, `Balkon`, `Garaz`, `JasnaKuchnia`, `Ogrodek`, `Piwnica`, `PowPiwnicy`, `Umeblowane`, `WcOsobno`, `Winda`, `TypBudynku`, `TypObiektu`, `UzbGaz`, `UzbKana`, `UzbPrad`, `UzbSzambo`, `UzbWoda`, `LiczbaZabudowan`, `ZapleczeSocjalne`, `Opis`, `CenaMetra`, `Cena`, `WalutaCeny`, `Zdjecia`, `DataWprow`, `DataModyf`, `DataWydania`, `Opiekun`, `TelOpiekun`, `NrLic`, `Specjalna`, `Latitude`, `Longitude`, `ZoomMapy`, `LiczWyswietlen`, `LiczEmaili`, `Liczwydr`) SELECT `IdOferty`, `NrOferty`, CONVERT(`TypUmowy` USING utf8), CONVERT(`TypTrans` USING utf8), CONVERT(`Rynek` USING utf8), CONVERT(`TypNier` USING utf8), CONVERT(`Kraj` USING utf8), CONVERT(`Wojewodztwo` USING utf8), CONVERT(`Gmina` USING utf8), CONVERT(`Powiat` USING utf8), CONVERT(`Miejscowosc` USING utf8), CONVERT(`Osiedle` USING utf8), CONVERT(`Ulica` USING utf8), `Powierzchnia`, CONVERT(`RodzWlas` USING utf8), `PowDzialki`, CONVERT(`RodzWlasDzialki` USING utf8), `Pietro`, `WysBud`, `LiczbaPok`, CONVERT(`RokBudowy` USING utf8), CONVERT(`Ogrzewanie` USING utf8), CONVERT(`StanTech` USING utf8), CONVERT(`Balkon` USING utf8), CONVERT(`Garaz` USING utf8), CONVERT(`JasnaKuchnia` USING utf8), CONVERT(`Ogrodek` USING utf8), CONVERT(`Piwnica` USING utf8), `PowPiwnicy`, CONVERT(`Umeblowane` USING utf8), CONVERT(`WcOsobno` USING utf8), CONVERT(`Winda` USING utf8), CONVERT(`TypBudynku` USING utf8), CONVERT(`TypObiektu` USING utf8), CONVERT(`UzbGaz` USING utf8), CONVERT(`UzbKana` USING utf8), CONVERT(`UzbPrad` USING utf8), CONVERT(`UzbSzambo` USING utf8), CONVERT(`UzbWoda` USING utf8), `LiczbaZabudowan`, CONVERT(`ZapleczeSocjalne` USING utf8), CONVERT(`Opis` USING utf8), `CenaMetra`, `Cena`, CONVERT(`WalutaCeny` USING utf8), `Zdjecia`, `DataWprow`, `DataModyf`, CONVERT(`DataWydania` USING utf8), CONVERT(`Opiekun` USING utf8), CONVERT(`TelOpiekun` USING utf8), CONVERT(`NrLic` USING utf8), `Specjalna`, `Latitude`, `Longitude`, `ZoomMapy`, `LiczWyswietlen`, `LiczEmaili`, `Liczwydr` FROM `oferty_zrodlowe` WHERE idOferty=id_new; END /////////////////////////////// DROP TRIGGER IF EXISTS `testowa`.`sync_when_insert`// CREATE TRIGGER `testowa`.`sync_when_insert` AFTER INSERT ON `testowa`.`oferty_zrodlowe` FOR EACH ROW BEGIN CALL syncing(NEW.idOferty); END // //////////////////////////////// DROP TRIGGER IF EXISTS `testowa`.`sync_when_update`// CREATE TRIGGER `testowa`.`sync_when_update` AFTER UPDATE ON `testowa`.`oferty_zrodlowe` FOR EACH ROW BEGIN CALL syncing(NEW.idOferty); END // //////////////////////////////// DROP TRIGGER IF EXISTS `testowa`.`sync_when_delete`// CREATE TRIGGER `testowa`.`sync_when_delete` AFTER DELETE ON `testowa`.`oferty_zrodlowe` FOR EACH ROW BEGIN CALL syncing_del(OLD.idOferty); END // |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Cytat czy ktoś mi pomoże? Ja. Zacznę od pytania: co to za cyrki z tą zmienną ilością tabel? 99% aplikacji nie potrzebuje zmieniać sobie struktury bazy. Co jest w tych tabelach córkach? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 08:04 |