![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
dobra, mam kod na postgresa i dziala z tym usuwanie bardzo slicznie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Zrobile pare przemian. Zmienilem typ na BIGINT oraz pozmienialem nazwy na angielskie. Teraz jeszcze poproboje sie pobawic w przenoszenie :? i takie tam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
a co powiecie na to?
Kod --mkdir, tworzy katalog To jest kod w sql'u i plpgsql'u zoptymalizowany dla postgres'q ale mozna z niego biorac przyklad zrobic inny, np. php.
CREATE FUNCTION mkdir (VARCHAR(100), BIGINT) RETURNS BOOLEAN AS ' INSERT INTO categories (name, parent) VALUES ($1, $2); INSERT INTO asociations (first_id, second_id, depth) SELECT first_id, (SELECT id FROM categories WHERE name = $1 AND parent = $2), depth + 1 FROM asociations WHERE second_id = $2; INSERT INTO asociations (first_id, second_id, depth) VALUES((SELECT id FROM categories WHERE name = $1 AND parent = $2), (SELECT id FROM categories WHERE name = $1 AND parent = $2), 0); SELECT true; ' LANGUAGE "sql"; --get_path, pobiera sciezke do katalogu CREATE FUNCTION get_path (BIGINT) RETURNS TEXT AS ' DECLARE cid ALIAS FOR $1; path TEXT; item RECORD; BEGIN path := '/'; FOR item IN SELECT c.name FROM categories c, asociations a WHERE c.id = a.first_id AND a.second_id = cid ORDER BY a.depth DESC LOOP path := path || item.name || '/'::TEXT; END LOOP; RETURN path; END; ' LANGUAGE "plpgsql"; Ps. kod jest w znacznikach code bo w sql'u brzydko wygladal |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:43 |