---
name: "Alzabo::Create::Column"
section: "3pm"
platform: "linux"
package: "libalzabo-perl"
version: "0.92-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Alzabo::Create::Column"
---

# Alzabo::Create::Column(3pm)

Column objects for use in schema creation

## NAME

Alzabo::Create::Column - Column objects for use in schema creation

## SYNOPSIS

```
  use Alzabo::Create::Column;
```

## DESCRIPTION

This object represents a column.  It holds data specific to a column. Additional data is held in a `"Alzabo::Create::ColumnDefinition"` object, which is used to allow two columns to share a type (which is good when two columns in different tables are related as it means that if the type of one is changed, the other is also.)

## INHERITS FROM

`"Alzabo::Column"`

Note: all relevant documentation from the superclass has been merged into this document.

## METHODS

### new

The constructor accepts the following parameters:

- •

  table =\> `"Alzabo::Create::Table"` object

- •

  name =\> `$name`

- •

  nullable =\> 0 or 1 (optional)

  Defaults to false.

- •

  sequenced =\> 0 or 1 (optional)

  Defaults to false.

- •

  default =\> `$default` (optional)

- •

  default\_is\_raw =\> `$boolean` (optional)

  If "default\_is\_raw" is true, then it will not be quoted when passed to the DBMS in SQL statements. This should be used to allow a default which is a function, like `"NOW()"`.

- •

  attributes =\> \\@attributes (optional)

- •

  length =\> `$length` (optional)

- •

  precision =\> `$precision` (optional)

  One of either ...

- •

  type =\> `$type`

  ... or ...

- •

  definition =\> `"Alzabo::Create::ColumnDefinition"` object

- •

  comment =\> `$comment`

  An optional comment.

It returns a new `"Alzabo::Create::Column"` object.

Throws: `"Alzabo::Exception::Params"`

### type

Returns the column's type as a string.

### alter

This method allows you to change a column's type, length, and precision as a single operation.  It should be instead of calling `"set_type()"` followed by `"set_length()"`.

It takes the following parameters:

- •

  type =\> `$type`

- •

  length =\> `$length` (optional)

- •

  precision =\> `$precision` (optional)

Throws: `"Alzabo::Exception::Params"`, `"Alzabo::Exception::RDBMSRules"`

### set\_type ($type)

Sets the column's type.

Throws: `"Alzabo::Exception::Params"`, `"Alzabo::Exception::RDBMSRules"`

### set\_table ("Alzabo::Create::Table" object)

Sets the `"Alzabo::Create::Table"` object in which this column is located.

Throws: `"Alzabo::Exception::Params"`

### name

Returns the column's name as a string.

### set\_name ($name)

Sets the column's name (a string).

Throws: `"Alzabo::Exception::Params"`, `"Alzabo::Exception::RDBMSRules"`

### nullable

Returns a boolean value indicating whether or not NULLs are allowed in this column.

### set\_nullable (0 or 1)

Sets the nullability of the column (this determines whether nulls are allowed in the column or not).  Must be 0 or 1.

Throws: `"Alzabo::Exception::Params"`

### attributes

A column's attributes are strings describing the column (for example, valid attributes in MySQL are 'UNSIGNED' or 'ZEROFILL'.

This method returns a list of strings of such strings.

### has\_attribute

This method can be used to test whether or not a column has a particular attribute.  By default, the check is case-insensitive.

It takes the following parameters:

- •

  attribute =\> `$attribute`

- •

  case\_sensitive =\> 0 or 1 (defaults to 0)

It returns a boolean value indicating whether or not the column has this particular attribute.

### set\_attributes (@attributes)

Sets the column's attributes.  These are strings describing the column (for example, valid attributes in MySQL are "PRIMARY KEY" or "AUTO\_INCREMENT").

Throws: `"Alzabo::Exception::RDBMSRules"`

### add\_attribute ($attribute)

Add an attribute to the column's list of attributes.

Throws: `"Alzabo::Exception::RDBMSRules"`

### delete\_attribute ($attribute)

Delete the given attribute from the column's list of attributes.

Throws: Throws: `"Alzabo::Exception::Params"`, `"Alzabo::Exception::RDBMSRules"`

### default

Returns the default value of the column as a string, or undef if there is no default.

### set\_default ($default)

Sets the column's default value.

### length

Returns the length attribute of the column, or undef if there is none.

### precision

Returns the precision attribute of the column, or undef if there is none.

### set\_length

This method takes the following parameters:

- •

  length =\> `$length`

- •

  precision =\> `$precision` (optional)

This method sets the column's length and precision.  The precision parameter is optional (though some column types may require it if the length is set).

Throws: `"Alzabo::Exception::RDBMSRules"`

### sequenced

The meaning of a sequenced column varies from one RDBMS to another. In those with sequences, it means that a sequence is created and that values for this column will be drawn from it for inserts into this table.  In databases without sequences, the nearest analog for a sequence is used (in MySQL the column is given the AUTO\_INCREMENT attribute, in Sybase the identity attribute).

In general, this only has meaning for the primary key column of a table with a single column primary key.  Setting the column as sequenced means its value never has to be provided to when calling `"Alzabo::Runtime::Table->insert"`.

Returns a boolean value indicating whether or not this column is sequenced.

### set\_sequenced (0 or 1)

Sets the value of the column's sequenced attribute.

Throws: `"Alzabo::Exception::Params"`, `"Alzabo::Exception::RDBMSRules"`

### is\_primary\_key

Returns a boolean value indicating whether or not this column is part of its table's primary key.

### is\_numeric

Returns a boolean value indicating whether the column is a numeric type column.

### is\_character

Returns a boolean value indicating whether the column is a character type column.

This is true only for any columns which are defined to hold *text* data, regardless of size.

### is\_blob

Returns a boolean value indicating whether the column is a blob column.

This is true for any columns defined to hold binary data, regardless of size.

### definition

The definition object is very rarely of interest.  Use the `"type()"` method if you are only interested in the column's type.

This methods returns the `"Alzabo::Create::ColumnDefinition"` object which holds this column's type information.

### set\_definition ("Alzabo::Create::ColumnDefinition" object)

Sets the `"Alzabo::Create::ColumnDefinition"` object which holds this column's type information.

### former\_name

If the column's name has been changed since the last time the schema was instantiated, this method returns the column's previous name.

### comment

Returns the comment associated with the column object, if any.

### set\_comment ($comment)

Set the comment for the column object.
