Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Spalte als nicht beschreibbar einstellen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von hibiscus, 17 Oktober 2014.

  1. hibiscus

    hibiscus Neuer Benutzer

    Hallo,

    könnt ihr mir bitte weiterhelfen, wie ich bei einer MySQL Datenbank ein bestimmtes Feld, das sich "VETO" nennt mit einem Befehl nicht beschreibbar machen kann, damit dieses Feld immer leer bleibt?

    Grüße, hibiscus
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Trivial: die Spalte einfach weglassen, alter table ..., oder halt via TRIGGER.
     
  3. hibiscus

    hibiscus Neuer Benutzer

    Wie ihr merkt bin ich ein kompletter newbee. Folgende Situation, ich bekomme aus einer Wawi durch eine Schnittstelle verbunden mit dem Onlineshop, Daten in den Shop geladen. Dabei möchte ich das ein Datenbankfeld keine Daten aus der Wawi in die Shopdatenbank schreibt.

    Gibt es da eine Möglichkeit?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ja, sagte ich ja schon. In PostgreSQL mal zur Demo:

    Code:
    test=# create table hibiscus (id int primary key, val1 int, val2 int);
    CREATE TABLE
    Time: 5,692 ms
    test=*# create or replace function ignore_val2_insert() returns trigger as $$begin new.val2 := null; return new; end; $$ language plpgsql;
    CREATE FUNCTION
    Time: 0,565 ms
    test=*# create or replace function ignore_val2_update() returns trigger as $$begin new.val2 := old.val2; return new; end; $$ language plpgsql;
    CREATE FUNCTION
    Time: 0,391 ms
    test=*# create trigger trg1 before insert on hibiscus for each row execute procedure ignore_val2_insert();
    CREATE TRIGGER
    Time: 0,295 ms
    test=*# create trigger trg2 before update on hibiscus for each row execute procedure ignore_val2_update();
    CREATE TRIGGER
    Time: 0,339 ms
    test=*# insert into hibiscus values (1, 10, 20);
    INSERT 0 1
    Time: 0,586 ms
    test=*# select * from hibiscus ;
    id | val1 | val2
    ----+------+------
      1 |  10 |
    (1 row)
    
    Time: 0,235 ms
    test=*# update hibiscus set val2=30 where id = 1;
    UPDATE 1
    Time: 0,531 ms
    test=*# select * from hibiscus ;
    id | val1 | val2
    ----+------+------
      1 |  10 |
    (1 row)
    
    
    Wie man sieht, wird sowohl bei INSERT als auch bei UPDATE der Value für val2 ignoriert. TRIGGER-based Lösung für Dein Problem.

    Ob und wie das für MySQL geht? Vielleicht ähnlich, vielleicht gar nicht. Damit spiele ich nicht, ist für mich eher Kategorie 'Sondermüll'.[/code]
     
  5. ukulele

    ukulele Datenbank-Guru

    Warum kannst du nicht einfach die Übergabe der Daten durch die Schnittstelle verhindern?
     
  6. hibiscus

    hibiscus Neuer Benutzer

    Die Schnittstelle ist leider verschlüsselt. Ist es auch möglich mit "phpmyadmin" diese Datenbankfeld nicht beschreibbar zu machen?
     
  7. Hony%

    Hony% Datenbank-Guru

    @hibiscus

    Trigger sind Teil der DDL und werden per SQL definiert. Und natürlich kannst du per PMA auch Trigger mit SQL anlegen. Möglicherweise gibt es dafür mittlerweile auch GUI-Optionen. Aber da musst du schon selber schauen. Eine einfache »Read-Only Checkbox« gibt es aber ziemlich sicher nicht.

    Gruß
    Hony
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden