使用mysql_type声明特定字段类型

老葛的Drupal培训班 Think in Drupal

如果你知道你的数据库引擎的准确字段类型,那么你可以在你的模式定义中使用mysql_type (或者 pgsql_type)键.这将覆写该数据库引擎的type和size键。例如,MySQL有一个名为TINYBLOB的字段类型,专门用于小一点的二进位大对象。如果对于MySQL,我们为其使用TINYBLOB类型,而对于其它的数据库引擎,我们则为其使用普通的BLOB类型,那么在Drupal中该如何声明呢?答案如下所示:
 
$field['fieldname'] = array(
    'mysql_type' > 'TINYBLOB', // MySQL will use this.
    'type' => 'blob', // Other databases will use this.
    'size' => 'normal', // Other databases will use this.
    'not null' => TRUE,
    'description' => t('Wee little blobs.')
);
 
MySQL和PostgreSQL的本地类型,如表5-2所示。
 
5-2.如何将模式定义中的Type和Size键映射到本地的数据库类型
 
   模式定义            本地数据库字段类型
类型       尺寸       MySQL         PostgreSQL
varchar     normal      VARCHAR         varchar
char        normal      CHAR            character
text        tiny        TINYTEXT        text
text        small       TINYTEXT        text
text        medium      MEDIUMTEXT      text
text        big         LONGTEXT        text
text        normal      TEXT            text
serial      tiny        TINYINT         serial
serial      small       SMALLINT        serial
serial      medium      MEDIUMINT       serial
serial      big         BIGINT          bigserial
serial      normal      INT             serial
int         tiny        TINYINT         smallint
int         small       SMALLINT        smallint
int         medium      MEDIUMINT       int
int         big         BIGINT          bigint
int         normal      INT             int
float       tiny        FLOAT           real
float       small       FLOAT           real
float       medium      FLOAT           real
float       big         DOUBLE          double precision
float       normal      FLOAT           real
numeric     normal      DECIMAL         numeric
blob        big         LONGBLOB        bytea
blob        normal      BLOB            bytea
datetime    normal      DATETIME        timestamp
 

Drupal版本: