SQL: Column Type ändern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • RE: SQL: Column Type ändern

    ohne das gelesen zu haben.
    Spalte löschen und neuanlegen.
    Der Inhalt ist dann natürlich futsch.
    Aber das sollte man sich auch vorher überlegen wie der Datentyp sein soll.
    Sonst neue Spalte anlegen aus der alten in die neue konvertieren, dann alte Spalte löschen.

    Sven
    :wq! /dev/null
  • Es sollte gehen, ist aber sehr DBMS spezifisch. Es gibt dafür eine sehr unterschiedliche Syntax.

    - Für MS-SQLSERVER hab ich folgendes gefunden:

    ALTER TABLE table
    { [ ALTER COLUMN column_name
    { new_data_type [ ( precision [ , scale ] ) ]
    [ COLLATE < collation_name > ]
    [ NULL | NOT NULL ]
    | {ADD | DROP } ROWGUIDCOL }
    ]
    ...

    in dem von dir zitierten Beispiel hätte man also bei:

    ALTER TABLE user_general ALTER COLUMN user_name TYPE varchar(15)
    einfach nur das TYPE weglassen müssen.

    - ORACLE nutzt dagegen das Modify statement (gleiches Beispiel):

    ALTER TABLE user_general MODIFY (user_name varchar2(15))
    Oracle lässt das aber meines Wissens nur zu, wenn die Spalte leer ist.

    - MySQL lehnt sich wohl an die Oracle Syntax an.
  • RE: SQL: Column Type ändern

    Jepp, danke, so machen die das. Der Inhalt muss übrigens nicht futsch sein, weil du den "rübercasten" kannst.

    Naja, bei einem Design-Tool kann ich wohl nicht verlangen, dass man sich das vorher überlegt ... ;)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Jo, das hatte ich dann auch irgendwann gefunden. Es soll bisher ein reines PostgreSQL Framework sein. Aber ich bereite das schon entsprechend vor ...

    Du kannst übrigens von ziemlichen Glück sprechen, dass ich nach "MS" noch weitergelesen habe. Ich gehe jetzt mal meine Augen mit Sagrotan auswaschen. So etwas kann übel enden ...
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Jo, danke, hat mir auch jemand bei heise gesagt, nachdem ich es überlesen hatte. :( Naja, ich werde es erstmal aus Gründen der Kompatibilität wie in 7.x implementieren. Viel anderes wird die 8.0er auch nicht machen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Du kannst übrigens von ziemlichen Glück sprechen, dass ich nach "MS" noch weitergelesen habe. Ich gehe jetzt mal meine Augen mit Sagrotan auswaschen. So etwas kann übel enden ...


    Oh je, tut mir leid. :( Da hätte ich wohl mit den anderen Beispielen anfangen sollen. Wobei sich sowohl PostgreSQL als auch die Unerwähnbaren wohl eher an den SQL Standard halten.
  • Naja, ich habe bisher nur mit a.C.c.E.S.s als DBMS zu tun gehabt. Solange man im Abfragebeereich bleibt, nehmen die sich ja alle mehr oder weniger nichts. Durch das Framework kam ich jetzt halt mehr in den Design-Bereich. Da musste ich schon einiges nachsuchen. Am meisten haben mir die SQL99 (?) - konformen Information Schemas geholfen.

    Aber ich glaube, dass ich jetzt in dieser Beziehung auf einem ganz guten Weg bin. Das Ding wächst und wächst und vor allem: Es wächst immer schneller. Ich mach mich jetzt nochmal an die Constraints und References. Dnn ist das, was man sourcecodefrei machen kann so ziemlich erledigt. Danach muss das an möglichst viele better Testa, um die ganzen Fälle, die ich nicht berücksichtigt habe, bugfrei hinzubekommen.

    Dann schauen wir mal, wie es weitergeht.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ich versuche es soweit wie möglich an den SQL-Standard anzulehnen. Ich gehe auch davon aus, dass die libs ähnlich sein werden.

    Derzeit ziehe ich eine Zwischendecke ein, die ein "String - to - Server" Interface einzieht und sich von den angebotenen Methoden her an SQL orientiert. Dies wäre dann (wohl, Überraschungen gibt es immer) sozusagen der "Treiber".

    Der Hintergrund ist aber eigentlich, dass ich einfach 1298712397312987 Mal vergessen habe Abfrageergebnisse wieder freizugeben und derlei Späßken, die dem Speicher nicht gerade gut tun, :) Ich muss ohnehin alles komplett noch einmal durchchecken. (Einmal habe ich schlicht vergessen einen dealloc zu einer Klasse zu schreiben. :-))

    Eine einfache DB für deine eigene, private App bekommst du ja mit CoreData und MySQL. Mein Hintergrund ist ein anderer. Ich wollte schon lange meine Anwaltssoftware auf OS X portieren. Hierzu benötige ich aber ein stabiles und anständiges DBMS, die netzwerkfähig ist. Einer aus dem Forum brachte mich auf PostgreSQL.

    Ob das mit anderen DBMS geht, ist zweifelhaft. Beispiel:
    Ich habe zuweilen Abfragen in Abfragen:

    Quellcode

    1. result = PQexec( connection, [@"...] cString] );
    2. ...
    3. for( ... )
    4. anotherResult = PQexec( connection, [@"...] cString] );
    5. ...
    6. PQclear( anotherResulte );
    7. PQclear( result );

    (Das kapsele ich gerade oo als Zwischendecke.)

    Nicht jede Lib/DBMS bietet wohl solche verschachtelten Results an. Dann müßte man also glech auf "höherer" Ebene selbst Zwischenergebnisse speichern usw. Das werde ich nicht unterstützen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Das das Framework einen anderen Schwerpunkt hat als CoreData dachte ich mir. Es ging mir auch eher um größere Datenbanken, so wie Oracle oder DB2.

    Wenn ich mir dein Codebeispiel dazu anschaue finde ich es recht ähnlich der Philosophie von gängigen Frameworks wie ODBC oder JDBC. Worin besteht denn der wesentliche Vorteil eines neuen Frameworks? Ich kann mir vorstellen, das es ein ziemlicher Aufwand ist, dieses zu erstellen. Ich wollte mir dein Framework auch mal genauer anschauen, aber irgendwie bin ich zu blöd in dem Thread (Erstes pre-alpha) eine Möglichkeit zu finden es zu laden.

    Was die Verwendung von verschachtelten Abfragen betrifft, so habe ich damit bisher noch keine Probleme gehabt, weder durch die Verwendung von Subqueries innerhalb einer Abfrage, noch durch die Nutzung mehrerer ResultSets (oder Cursor wie Oracle sagen würde). Ich habe allerdings bisher fast nur auf "großen" Datenbanken wie Oracle gearbeitet.

    BTW: Sorry für die Erwähnung eines Frameworks das ursprünglich von den Unerwähnbaren entwickelt wurde. ;) Ich hoffe, ich strapaziere deinen Vorrat an Sagrotan nicht allzusehr.
  • Wenn ich mir dein Codebeispiel dazu anschaue finde ich es recht ähnlich der Philosophie von gängigen Frameworks wie ODBC oder JDBC. Worin besteht denn der wesentliche Vorteil eines neuen Frameworks?

    Für PostgreSQL gibt es kein Objective-C Framework. Der Vorteil liegt darin, dass ich das strikt auf Cocoa/oC setze und Bindings anbiete. Als "Client" des Frameworks schreibe ich gerade ein Tool zum Erstellen von PostgreSQL Datenbanken, ohne dass ich Sourcen eingeben muss. Einfach im IB zusammenstecken.

    Ebenso sieht es mit normalen Clients aus. Du legst da deine TableViews in ein Fenster und bindest die. Wenn du den IB beherrschst hast du so etwas wie einen Access-Forumlargenerator. Sourcen müssen nicht erstellt werden.

    Ich kann mir vorstellen, das es ein ziemlicher Aufwand ist, dieses zu erstellen

    Der Vorteil ist eben, dass niemand, der damit einen Client schreibt, diese Mühe erneut machen muss. Er steckt nur noch zusammen.

    Ich wollte mir dein Framework auch mal genauer anschauen, aber irgendwie bin ich zu blöd in dem Thread (Erstes pre-alpha) eine Möglichkeit zu finden es zu laden.

    Ja, das wundert mich nicht. Ihc hatte einfach mein Projektverzeichnis as is hochgeladen. Da musste man also händisch Anpassungen vornehmen. Das nächste wird "richtig" als eigenes Framework mit Installtionsanweisung gemacht. Das war halt nachts nach getaner Arbeit - schrieb ich ja auch im Thread.

    Ich wollte mir dein Framework auch mal genauer anschauen, aber irgendwie bin ich zu blöd in dem Thread (Erstes pre-alpha) eine Möglichkeit zu finden es zu laden.

    SubQueries sind nie ein Problem, da sie ja "DB-intern" bleiben. Du bekommst nur _ein_ Gesamtergebnis geliefert. Ich habe von jemanden gehört, dass es DBMS/Libs gibt, die das nicht unterstützen. Ich verlasse mich halt darauf. Wenn das fast immer geht: Umso besser!

    BTW: Sagrotan ist alle Ich bin jetzt auf Domestos umgestiegen. ;-)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ok, die Bindings sind ein schlagendes Argument.
    Nur als Gedanken, vielleicht für eine spätere Version, wenn Du z.B. ODBC als Zwischenschicht einfügst, könnte das ganze Framework doch Datenbankunabhängig werden. Ausserdem kann ODBC Arbeit bei bestimmten Routineaufgaben mit dem DBMS abnehmen. Also schematisch etwa so:

    Dein Framework (verantwortlich für Objective C Kapselung, Bindings etc.)
    ---------------------
    ^
    ODBC-API (stellt die Datenbankfunktionen abstakt zur Verfügung)
    ---------------------
    ^
    ODBC-Treiber (Datenbankspezifisch)
    ---------------------
    ^
    DBMS
  • Jo, habe ich auch schon dran gedacht. Dazu müsste ich mich aber erst einmal in das ODBC-API einlesen und schauen ob das geht ...

    Was empfiehlst du denn?

    BTW: Die Bindings machen erst richtig Spaß, wenn ich eine Brücke zu Trigger habe. Life-Bindings über die Datenbank einmal um die Welt ...
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Die Header Dateien sind

    sql.h
    sqlext.h
    sqltypes.h

    Ich hab deutlich mehr JDBC als ODBC gemacht, also halten sich meine Lesetips hier in Grenzen. Aber vielleicht helfen ein paar links:

    iodbc.org - ist die Open Source implementierung, die Apple nutzt
    dbmaker.com.tw/reference/manuals/odbc/odbc_chap_01.html - ist ein eBook das ich mal dazu gefunden hatte
    Und (Vorsicht Domestos bereit halten!):
    msdn.microsoft.com/library/def…dbcodbc_api_reference.asp - ist die vollständige API reference
  • na super! Also bin ich doch blöde oder wenigstens blind ...

    Na, das schaue ich mir noch _heute_ an.

    Hmm, die scheinen das ähnlich zu machen und bieten zudem Kapsleung einiger Angelegenheiten, die ich zu Fuß machen musste.

    Das sieht _sehr_, _sehr_ gut aus.

    Vielen Dank!
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?