GdaDbTable

GdaDbTable — Object to represent table database object

Stability Level

Stable, unless otherwise indicated

Functions

Properties

char * comment Read / Write
char * istemp Read / Write

Types and Values

Object Hierarchy

    GObject
    ╰── GdaDbBase
        ╰── GdaDbTable

Implemented Interfaces

GdaDbTable implements GdaDbBuildable and GdaDdlModifiable.

Includes

#include <libgda/libgda.h>

Description

This object represents a table of a database. The table view can be constracted manually using API or generated from xml file together with other databse objects. See GdaDbCatalog. GdaDbTable implements GdaDbBuildable interface for parsing xml file.

GdaDbTable can be used as a container to hold other objects, e.g. GdaDbColumn, GdaDbFkey and as soon as populated with all needed objects the table can be created using gda_ddl_modifiable_create(),

To delete the table a method gda_ddl_modifiable_drop() can be called.

A simple example of how to create a table with 3 columns being the last column of the foreign key.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
GdaConnection *cnc;
//Open connection here

GError        *error = NULL;

GdaDbTable *tproject = gda_db_table_new ();
gda_db_base_set_name (GDA_DB_BASE (tproject), "Project");

GdaDbColumn *pid   = gda_db_column_new ();
GdaDbColumn *pname = gda_db_column_new ();
GdaDbColumn *pfkey = gda_db_column_new ();
GdaDbFkey   *fkey  = gda_db_fkey_new ();

gda_db_column_set_name (pid, "id");
gda_db_column_set_type (pid, G_TYPE_INT);
gda_db_column_set_nnul (pid, TRUE);
gda_db_column_set_autoinc (pid, TRUE);
gda_db_column_set_unique (pid, TRUE);
gda_db_column_set_pkey (pid, TRUE);

gda_db_column_set_name (pname, "name");
gda_db_column_set_type (pname, G_TYPE_STRING);
gda_db_column_set_size (pname, 30);
gda_db_column_set_nnul (pname, TRUE);
gda_db_column_set_unique (pname, TRUE);

gda_db_column_set_name (pfkey, "fkey");
gda_db_column_set_type (pfkey, G_TYPE_INT);
gda_db_column_set_nnul (pfkey, TRUE);

gda_db_fkey_set_ref_table (fkey, "AnotherTable");
gda_db_fkey_set_ondelete (fkey, GDA_DB_FKEY_RESTRICT);
gda_db_fkey_set_onupdate (fkey, GDA_DB_FKEY_RESTRICT);
gda_db_fkey_set_field (fkey, "fkey", "another_table_id");

gda_db_table_append_column (tproject, pid);
g_object_unref (pid);

gda_db_table_append_column (tproject, pname);
g_object_unref (pname);

gda_db_table_append_column (tproject, pfkey);
g_object_unref (pfkey);

gda_db_table_append_fkey (tproject, fkey);
g_object_unref (fkey);

if (!gda_ddl_modifiable_create (GDA_DDL_MODIFIABLE (tproject), cnc, NULL, &error))
{
  g_error ("It was not possible to create the table in the database: %s\n",
           error && error->message ? error->message : "No detail");
}

g_object_unref (tproject);

Functions

gda_db_table_new ()

GdaDbTable *
gda_db_table_new (void);

Returns

New instance of GdaDbTable, to free with g_object_unref() once not needed anymore

Since: 6.0

Stability Level: Stable


gda_db_table_is_valid ()

gboolean
gda_db_table_is_valid (GdaDbTable *self);

This method returns TRUE if at least one column is added to the table. It ruturns FALSE if the table has no columns.

Parameters

self

a GdaDbTable instance

 

Returns

TRUE or FALSE

Since: 6.0

Stability Level: Stable


gda_db_table_append_column ()

void
gda_db_table_append_column (GdaDbTable *self,
                            GdaDbColumn *column);

Append column to the internal list of columns

Parameters

self

a GdaDbTable instance

 

column

column to add

 

Since: 6.0

Stability Level: Stable


gda_db_table_get_columns ()

GList *
gda_db_table_get_columns (GdaDbTable *self);

Use this method to obtain internal list of all columns. The internal list should not be freed.

Parameters

self

an GdaDbTable object

 

Returns

A list of GdaDbColumn objects or NULL if the internal list is not set or if NULL is passed.

[element-type Gda.DbColumn][transfer none]

Since: 6.0

Stability Level: Stable


gda_db_table_append_fkey ()

void
gda_db_table_append_fkey (GdaDbTable *self,
                          GdaDbFkey *fkey);

Append fkey to the internal list of columns

Parameters

self

a GdaDbTable instance

 

fkey

fkry to add

 

Since: 6.0

Stability Level: Stable


gda_db_table_get_fkeys ()

GList *
gda_db_table_get_fkeys (GdaDbTable *self);

Use this method to obtain internal list of all fkeys. The internal list should not be freed.

Parameters

self

A GdaDbTable object

 

Returns

A list of GdaDbFkey objects or NULL if the internal list is not set or NULL is passed.

[transfer none][element-type Gda.DbFkey]

Since: 6.0

Stability Level: Stable


gda_db_table_prepare_create ()

gboolean
gda_db_table_prepare_create (GdaDbTable *self,
                             GdaServerOperation *op,
                             gboolean ifnotexists,
                             GError **error);

Populate op with information stored in self . This method sets op to execute CREATE_TABLE operation.

Parameters

self

a GdaDbTable instance

 

op

an instance of GdaServerOperation to populate.

 

ifnotexists

Set it to TRUE if "IF NOT EXISTS" should be added

 

error

error container

 

Returns

TRUE if no error occured and FALSE otherwise.

Since: 6.0

Stability Level: Stable


gda_db_table_update ()

gboolean
gda_db_table_update (GdaDbTable *self,
                     GdaMetaTable *obj,
                     GdaConnection *cnc,
                     GError **error);

With this method object obj in the database available through cnc will be updated using ADD_COLUMN operation with information stored in self . This method is designed for internal use only and should not be used for the new code. It will be obsolete.

Parameters

self

a GdaDbTable instance

 

obj

The corresponding meta object to take data from

 

cnc

opened connection

 

error

error container

 

Returns

TRUE if no error and FALSE otherwise


gda_db_table_append_constraint ()

void
gda_db_table_append_constraint (GdaDbTable *self,
                                const gchar *constr);

Adds global table constraint. It will be added to the sql string by the provider implementation if it supports it. Usually, table constraint is very complex and the current method just append a list of constraints to the sql string.

Parameters

self

a GdaDbTable instance

 

constr

a constraint string to append

 

Since: 6.0

Stability Level: Stable


gda_db_table_error_quark ()

GQuark
gda_db_table_error_quark (void);

gda_db_table_get_is_temp ()

gboolean
gda_db_table_get_is_temp (GdaDbTable *self);

gda_db_table_set_is_temp ()

void
gda_db_table_set_is_temp (GdaDbTable *self,
                          gboolean istemp);

Set if the table should be temporary or not. FALSE is set by default.

Parameters

self

a GdaDbTable object

 

istemp

Set if the table should be temporary

 

Since: 6.0

Stability Level: Stable

Types and Values

GdaDbTable

typedef struct _GdaDbTable GdaDbTable;

enum GdaDbTableError

Members

GDA_DB_TABLE_COLUMN_EMPTY

Table doesn't contain columns

 

GDA_DB_TABLE_CONNECTION_NOT_OPENED

Closed connection was passed as parameter

 

GDA_DB_TABLE_SERVER_OPERATION

Error related to GdaServerOperation

 

GDA_TYPE_DB_TABLE

#define GDA_TYPE_DB_TABLE (gda_db_table_get_type())

GDA_DB_TABLE_ERROR

#define GDA_DB_TABLE_ERROR gda_db_table_error_quark()

Property Details

The “comment” property

  “comment”                  char *

Table comment.

Owner: GdaDbTable

Flags: Read / Write

Default value: NULL


The “istemp” property

  “istemp”                   char *

Is table temporary.

Owner: GdaDbTable

Flags: Read / Write

Default value: NULL

See Also

GdaDbView, GdaDbCatalog