Thema: Delphi Firebird -->Create table

Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Firebird -->Create table

  Alt 31. Okt 2004, 11:15
@C
Frag's Pferd warum das nicht geht.
Sieht für mich nach einem korrekten DML-Statement aus.

@Raik
Etwas OffTopic
Transaktionen bei DDL?
Was soll das bringen? Es wird in jeder DB, mit der ich je gearbeitet habe, autom. ein Commit für die betreffenden Systemtabellen ausgelöst.
Ein...CREATE TABLE Miep (PK integer not null, SomeField VarChar(55)) ... heißt, die Tabelle wird sofort erzeugt.
Es gibt DBs (wie zum Bleistift Oracle), die haben sich dabei so zickig, dass sie dieses Commit sogar für die Host transaktion ausführen :
SQL-Code:
declare
  NewPK Integer;
begin
  INSERT INTO SomeTable i
    (i.SomeField)
  VALUES
    ('lalelu')
  RETURNING i.PK INTO NewPK;
  
  COMMIT;

  UPDATE SomeTable u
  SET u.SomeField = 'Hallo'
  WHERE u.PK = NewPK;

  EXECUTE IMMEDIATE 'CREATE TABLE Miep (PK integer not null, SomeField VarChar(55))';

  ROLLBACK;
end;
Man würde das erwarten:
Code:
PK SomeField
1   lalelu
Da aber das DDL-Statement ein Commit auslöst steht das drin (Das RollBack is wirkungslos):
Code:
PK  SomeField
1    Hallo
Mangels FB in der Firma kann ich dir jetzt nicht sagen, ob FB zu den "zickigen DDL'lern" gehört oder nicht
Vielleicht ist FB auch so konsistent, dass es in einer Serializable transaction kein DDL gestattet.


edit: 5 Mio. Tippfehler
noch ein Edit: Boah, da hatte ich doch tatsächlich DML statt DDL geschrieben
  Mit Zitat antworten Zitat