Öffnet eine Tabelle.
| 
            virtual int open
          ( | name, | |
| mode, | ||
| test_if_locked ); | 
| const char * | name ; | 
| int | mode ; | 
| uint | test_if_locked ; | 
        Dies ist die Methode open.
      
Wird zum Öffnen von Tabellen verwendet. Der Name ist der Name der Datei. Eine Tabelle wird dann geöffnet, wenn es nötig ist, zum Beispiel, wenn eine SELECT-Anfrage für die Tabelle eintrifft. (Die Tabellen werden jedoch nicht für jede Anfrage geöffnet und geschlossen, sondern zwischenzeitlich im Cache gelagert.)
        Wird von handler.cc durch
        handler::ha_open() aufgerufen. Der Server
        öffnet alle Tabellen mit einem Aufruf der Funktion
        ha_open(), die dann die Handler-spezifische
        open()-Funktion aufruft.
      
Ein Handler-Objekt wird im Rahmen seiner Initialisierung geöffnet, bevor es für normale Anfragen verwendet wird (nicht immer vor Metadatenänderungen.) Wenn das Objekt geöffnet wurde, wird es auch vor dem Löschen wieder geschlossen.
        Dies ist die Methode open. Sie wird
        aufgerufen, um eine Datenbanktabelle zu öffnen.
      
        Der erste Parameter ist der Name der zu öffnenden Tabelle und
        der zweite legt fest, welche Datei geöffnet oder welche
        Operation ausgeführt werden soll. Die Werte sind in
        handler.h definiert und werden hier für
        Sie noch einmal aufgeführt:
      
#define HA_OPEN_KEYFILE 1 #define HA_OPEN_RNDFILE 2 #define HA_GET_INDEX 4 #define HA_GET_INFO 8 /* nach dem Öffnen ha_info() aufrufen */ #define HA_READ_ONLY 16 /* Datei schreibgeschützt öffnen */ #define HA_TRY_READ_ONLY 32 /* Wenn Schreibzugriff nicht möglich, schreibgeschützten versuchen */ #define HA_WAIT_IF_LOCKED 64 /* Bei vorhandener Sperre mit dem Öffnen warten */ #define HA_ABORT_IF_LOCKED 128 /* Bei vorhandener Sperre das Öffnen überspringen*/ #define HA_BLOCK_LOCK 256 /* Entsperren, wenn einige Datensätze gelesen werden */ #define HA_OPEN_TEMPORARY 512
Die letzte Option gibt an, ob der Handler auf Sperren auf der Tabelle achten soll, ehe er sie öffnet.
        In der Regel wird Ihre Speicher-Engine auch irgendeine Form von
        Zugriffskontrolle implementieren müssen, damit in einer
        Multithread-Umgebung keine Dateien beschädigt werden. Ein
        Beispiel für die Implementierung von Dateisperren finden Sie in
        den Methoden get_share() und
        free_share() von
        sql/examples/ha_tina.cc.
      
            name
          
            mode
          
            test_if_locked
          
Keine Rückgabewerte.
        Dieses Beispiel stammt von der Speicher-Engine
        CSV:
      
int ha_tina::open(const char *name, int mode, uint test_if_locked)
{
DBUG_ENTER("ha_tina::open");
if (!(share= get_share(name, table)))
DBUG_RETURN(1);
thr_lock_data_init(&share->lock,&lock,NULL);
ref_length=sizeof(off_t);
DBUG_RETURN(0);
}
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

