SET BIND
(Regeln zum Erzwingen von Datentypen)
Konfigurieren von Datentyp-Erzwingungsregeln
DSQL, PSQL
SET BIND OF <type_from> TO <type_to> <type_from> ::= <scalar_datatype> | <blob_datatype> | TIME ZONE | VARCHAR | {CHARACTER | CHAR} VARYING <type_to> ::= <scalar_datatype> | <blob_datatype> | VARCHAR | {CHARACTER | CHAR} VARYING | LEGACY | NATIVE | EXTENDED | EXTENDED TIME WITH TIME ZONE | EXTENDED TIMESTAMP WITH TIME ZONE <scalar_datatype> ::= !! Siehe auch Syntax für Skalardatentypen !! <blob_datatype> ::= !! Siehe auch Syntax der BLOB-Datentypen !!
SET BIND
konfiguriert Datentyp-Zwangsregeln für die aktuelle Sitzung.Diese Anweisung ermöglicht es, bei Client-Server-Interaktionen einen Datentyp durch einen anderen zu ersetzen.Mit anderen Worten, type_from, das von der Engine zurückgegeben wird, wird in der Client-API als type_to dargestellt.
Note
|
Nur Felder, die von der Datenbank-Engine in regulären Nachrichten zurückgegeben werden, werden gemäß diesen Regeln ersetzt.Als Array-Slice zurückgegebene Variablen sind von der |
Wenn eine unvollständige Typdefinition verwendet wird (d. h. einfach CHAR
statt CHAR(n)
) in from_type, wird die Zwangsumsetzung für alle CHAR
-Spalten durchgeführt.Der spezielle unvollständige Typ TIME ZONE
steht für TIME WITH TIME ZONE
und TIMESTAMP WITH TIME ZONE
.Wenn in to_type eine unvollständige Typdefinition verwendet wird, definiert die Engine fehlende Details zu diesem Typ automatisch basierend auf der Quellspalte.
Das Ändern der Bindung eines 'NUMERIC'- oder 'DECIMAL'-Datentyps hat keinen Einfluss auf den zugrunde liegenden Integer-Typ.Im Gegensatz dazu wirkt sich die Änderung der Bindung eines Integer-Datentyps auch auf die entsprechenden NUMERICs/DECIMALs aus (zB SET BIND OF INT128 TO DOUBLE PRECISION
wird auch NUMERIC
und DECIMAL
mit einer Genauigkeit von 19 oder höher abbilden, da diese Typen INT128
verwenden als ihr zugrunde liegender Typ).
Der spezielle Typ LEGACY
wird verwendet, wenn ein Datentyp, der in früheren Firebird-Versionen fehlte, für alte Client-Software verständlich dargestellt werden soll (evtl. mit Datenverlust).Die in diesem Fall angewandten Nötigungsregeln sind in der folgenden Tabelle aufgeführt.
Nativ-Datentyp | Legacy-Datentyp |
---|---|
BOOLEAN |
CHAR(5) |
DECFLOAT |
DOUBLE PRECISION |
INT128 |
BIGINT |
TIME WITH TIME ZONE |
TIME WITHOUT TIME ZONE |
TIMESTAMP WITH TIME ZONE |
TIMESTAMP WITHOUT TIME ZONE |
Die Verwendung von EXTENDED
für type_to bewirkt, dass die Engine zu einer erweiterten Form des type_from-Datentyps gezwungen wird.Derzeit funktioniert dies nur für TIME/TIMESTAMP WITH TIME ZONE
, sie werden zu EXTENDED TIME/TIMESTAMP WITH TIME ZONE
gezwungen.Der Typ 'EXTENDED' enthält sowohl den Zeitzonennamen als auch den entsprechenden GMT-Offset, bleibt also verwendbar, wenn die Client-Anwendung benannte Zeitzonen nicht richtig verarbeiten kann (z. B. aufgrund der fehlenden ICU-Bibliothek).
Das Setzen einer Bindung auf NATIVE
setzt die vorhandene Zwangsregel für diesen Datentyp zurück und gibt sie in ihrem nativen Format zurück.
Die anfänglichen Bindungsregeln einer Verbindung werden über den DPB konfiguriert, indem eine durch Semikolon getrennte Liste von <type_from> TO <type_to>
-Optionen als Stringwert von isc_dpb_set_bind bereitgestellt wird.
Die Ausführung von [fblangref40-management-session-reset-alter-de] wird zu den durch den DPB konfigurierten Bindungsregeln oder andernfalls zum Systemstandard zurückgesetzt.
Tip
|
Es ist auch möglich, über die Konfigurationsoption
Weitere Informationen finden Sie in den [fblangref40-management-legacy-coercion-rules-de].Diese Einstellung ermöglicht es Legacy-Client-Anwendungen, mit Firebird 4.0 zu arbeiten, ohne sie neu kompilieren oder anderweitig anpassen zu müssen, um die neuen Datentypen zu verstehen. |