Announcement

Collapse
No announcement yet.

DB-Struktur mittels Script erweitern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DB-Struktur mittels Script erweitern

    Hallo zusammen,

    Da meine Anwendung auf vielen Systemen läuft und die Datenbankstruktur sich ab und zu erweitert, möchte ich ein Update-Script für die Datenbank erstellen. Dazu habe ich mir schon mal was gebaut:
    Code:
    delimiter //
    
    CREATE PROCEDURE addcol(IN ColName VarChar(50)) BEGIN
    
    IF NOT EXISTS(
    	SELECT * FROM information_schema.COLUMNS
    	WHERE COLUMN_NAME=ColName AND TABLE_NAME='testtab' AND TABLE_SCHEMA='test'
    	)
    	THEN
    		ALTER TABLE test.testtab
    		ADD COLUMN ColName bigint(20) unsigned NOT NULL default 1;
    
    END IF;
    END;
    //
    
    delimiter ;
    
    CALL addcol('Doedel5');
    
    DROP PROCEDURE addcol;
    Am Ende sollen dann etliche CALL-Aufrufe alle noch nicht vorhandene Spalten erstellen. Dazu muss ich natürlich noch die Feldtypen und Größen übergeben.
    Im Moment klemmt es aber leider schon: Das Select-Statement scheint den Parameter zu verwenden, jedoch wird im ALTER TABLE mir nun eine neue Spalte mit dem Namen ColName erstellt
    Kann man als 2. Stringparameter die komplette Spaltendefinition auch als einen String übergeben? Also in etwa so:
    Code:
    CALL addcol('Doedel5', 'Doedel5 bigint(20) unsigned NOT NULL default 1');
    Niels

  • #2
    ich habe hier noch was gefunden: http://www.cryer.co.uk/brian/mysql/h...ess_exists.htm
    Leider funktioniert der Aufruf aber nicht:
    Code:
    call AddColumnUnlessExists(test(), 'hash', 'doedel10', 'varchar(32) null')
    SQL Error: FUNCTION test.test does not exist
    Das ist halt die Gefahr an kopierten Funktionen, die man nicht wirklich versteht und nicht mal weiß, ob man sie richtig aufruft.

    Niels

    Comment

    Working...
    X