Warning: Declaration of Suffusion_MM_Walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /DISK2/WWW/plsql.cz/www/wp-content/themes/suffusion/library/suffusion-walkers.php on line 39
Dec 072011
 

Dnes jsem si chtěl zkusit jestli je možné přidat sloupce do tabulky, nikoliv však ALTER TABLE t_rename_col ADD (B NUMBER) , ale jak je to zábavné – pomocí úprav systémových tabulek pod účtem SYS. Po chvilce pátrání v systémových pohledech, tabulkách a auditování jsem si řekl, že je to možná trošku velká výzva a že pro začátek začnu s přejmenováním, so hurá do toho :

1) Založení testovací tabulky:

CREATE TABLE t_rename_col (a NUMBER);

2) Všechny sloupce jsou v pohledu ALL_TAB_COLS (pod SYS), tedy se podívejme na to, co je pod tímto view:

SELECT text FROM all_views WHERE view_name='ALL_TAB_COLS' AND owner='SYS';
Vcelku nehezký select (který mi nyní ve 2:30 ráno odradil od pokusu přidání sloupce), který se odkazuje na vcelku známou tabulku : sys.col$

3) Záznamy sloupců jsou v řádcích tabulky podle unikátního ID sloupce – so, sloupec který hledáme bude mít nejvyšší obj# (nebo jedno z nejvyšších a název A)

SELECT * FROM sys.col$ ORDER BY obj# DESC;
110489

4) Máme sloupec, máme hlavní systémovou tabulku – so zbývá jen update:

UPDATE sys.col$ SET name='TEST' WHERE obj#=110489;
commit;

5) A nyní test:

desc t_add_col;
Name Null Type
---- ---- ------
A (NULL) NUMBER

Docela zklamání :/, nadruhou stranu – co mi zafungovalo:

ALTER SYSTEM FLUSH SHARED_POOL;

desc t_add_col;
Name Null Type
---- ---- ------
TEST (NULL) NUMBER

Stop nudnému ALTER TABLE t_rename_col RENAME COLUMN A TO TEST  ;)

 Posted by at 02:04

 Leave a Reply

(required)

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>