1DBSchema::Column(3)   User Contributed Perl Documentation  DBSchema::Column(3)
2
3
4

NAME

6       DBIx::DBSchema::Column - Column objects
7

SYNOPSIS

9         use DBIx::DBSchema::Column;
10
11         #named params with a hashref (preferred)
12         $column = new DBIx::DBSchema::Column ( {
13           'name'    => 'column_name',
14           'type'    => 'varchar'
15           'null'    => 'NOT NULL',
16           'length'  => 64,
17           'default' => '',
18           'local'   => '',
19         } );
20
21         #list
22         $column = new DBIx::DBSchema::Column ( $name, $sql_type, $nullability, $length, $default, $local );
23
24         $name = $column->name;
25         $column->name( 'name' );
26
27         $sql_type = $column->type;
28         $column->type( 'sql_type' );
29
30         $null = $column->null;
31         $column->null( 'NULL' );
32         $column->null( 'NOT NULL' );
33         $column->null( '' );
34
35         $length = $column->length;
36         $column->length( '10' );
37         $column->length( '8,2' );
38
39         $default = $column->default;
40         $column->default( 'Roo' );
41
42         $sql_line = $column->line;
43         $sql_line = $column->line($datasrc);
44
45         $sql_add_column = $column->sql_add_column;
46         $sql_add_column = $column->sql_add_column($datasrc);
47

DESCRIPTION

49       DBIx::DBSchema::Column objects represent columns in tables (see
50       DBIx::DBSchema::Table).
51

METHODS

53       new HASHREF
54       new [ name [ , type [ , null [ , length  [ , default [ , local ] ] ] ]
55       ] ]
56           Creates a new DBIx::DBSchema::Column object.  Takes a hashref of
57           named parameters, or a list.  name is the name of the column.  type
58           is the SQL data type.  null is the nullability of the column
59           (intrepreted using Perl's rules for truth, with one exception: `NOT
60           NULL' is false).  length is the SQL length of the column.  default
61           is the default value of the column.  local is reserved for
62           database-specific information.
63
64           Note: If you pass a scalar reference as the default rather than a
65           scalar value, it will be dereferenced and quoting will be forced
66           off.  This can be used to pass SQL functions such as now() or
67           explicit empty strings as '' as defaults.
68
69       name [ NAME ]
70           Returns or sets the column name.
71
72       type [ TYPE ]
73           Returns or sets the column type.
74
75       null [ NULL ]
76           Returns or sets the column null flag (the empty string is
77           equivalent to `NOT NULL')
78
79       length [ LENGTH ]
80           Returns or sets the column length.
81
82       default [ LOCAL ]
83           Returns or sets the default value.
84
85       local [ LOCAL ]
86           Returns or sets the database-specific field.
87
88       table_obj [ TABLE_OBJ ]
89           Returns or sets the table object (see DBIx::DBSchema::Table).
90           Typically set internally when a column object is added to a table
91           object.
92
93       table_name
94           Returns the table name, or the empty string if this column has not
95           yet been assigned to a table.
96
97       line [ DATABASE_HANDLE | DATA_SOURCE [ USERNAME PASSWORD [ ATTR ] ] ]
98           Returns an SQL column definition.
99
100           The data source can be specified by passing an open DBI database
101           handle, or by passing the DBI data source name, username and
102           password.
103
104           Although the username and password are optional, it is best to call
105           this method with a database handle or data source including a valid
106           username and password - a DBI connection will be opened and the
107           quoting and type mapping will be more reliable.
108
109           If passed a DBI data source (or handle) such as
110           `DBI:mysql:database' or `DBI:Pg:dbname=database', will use syntax
111           specific to that database engine.  Currently supported databases
112           are MySQL and PostgreSQL.  Non-standard syntax for other engines
113           (if applicable) may also be supported in the future.
114
115       quoted_default DATABASE_HANDLE
116           Returns this column's default value quoted for the database.
117
118       sql_add_column [ DBH ]
119           Returns SQL to add this column to an existing table.  (To create a
120           new table, see "sql_create_table" in DBIx::DBSchema::Table
121           instead.)
122
123           NOTE: This interface has changed in 0.41
124
125           Returns two listrefs.  The first is a list of column alteration SQL
126           fragments for an ALTER TABLE statement.  The second is a list of
127           full SQL statements that should be run after the ALTER TABLE
128           statement.
129
130           The data source can be specified by passing an open DBI database
131           handle, or by passing the DBI data source name, username and
132           password.
133
134           Although the username and password are optional, it is best to call
135           this method with a database handle or data source including a valid
136           username and password - a DBI connection will be opened and the
137           quoting and type mapping will be more reliable.
138
139           If passed a DBI data source (or handle) such as
140           `DBI:Pg:dbname=database', will use PostgreSQL-specific syntax.
141           Non-standard syntax for other engines (if applicable) may also be
142           supported in the future.
143
144       sql_alter_column PROTOTYPE_COLUMN  [ DATABASE_HANDLE | DATA_SOURCE [
145       USERNAME PASSWORD [ ATTR ] ] ]
146           Returns SQL to alter this column so that it is identical to the
147           provided prototype column, also a DBIx::DBSchema::Column object.
148
149           NOTE: This interface has changed in 0.41
150
151           Returns two listrefs.  The first is a list of column alteration SQL
152           fragments for an ALTER TABLE statement.  The second is a list of
153           full SQL statements that should be run after the ALTER TABLE
154           statement.
155
156           Optionally, the data source can be specified by passing an open DBI
157           database handle, or by passing the DBI data source name, username
158           and password.
159
160           If passed a DBI data source (or handle) such as
161           `DBI:Pg:dbname=database', will use PostgreSQL-specific syntax.
162           Non-standard syntax for other engines (if applicable) may also be
163           supported in the future.
164
165           If not passed a data source (or handle), or if there is no driver
166           for the specified database, will attempt to use generic SQL syntax.
167
168       sql_drop_column [ DBH ]
169           Returns SQL to drop this column from an existing table.
170
171           NOTE: This interface has changed in 0.41
172
173           Returns a list of column alteration SQL fragments for an ALTER
174           TABLE statement.
175
176           The optional database handle or DBI data source/username/password
177           is not yet used.
178

AUTHOR

180       Ivan Kohler <ivan-dbix-dbschema@420.am>
181
183       Copyright (c) 2000-2006 Ivan Kohler Copyright (c) 2007-2013 Freeside
184       Internet Services, Inc.  All rights reserved.  This program is free
185       software; you can redistribute it and/or modify it under the same terms
186       as Perl itself.
187

BUGS

189       The new() method should warn that "Old-style $class creation without
190       named parameters is deprecated!"
191
192       Better documentation is needed for sql_add_column
193
194       sql_alter_column() has database-specific foo that should be abstracted
195       info DBIx::DBSchema::DBD::Pg
196
197       nullify_default option should be documented
198

SEE ALSO

200       DBIx::DBSchema::Table, DBIx::DBSchema, DBIx::DBSchema::DBD, DBI
201
202
203
204perl v5.36.0                      2023-01-20               DBSchema::Column(3)
Impressum