检查表的字段是否设置了NOT NULL属性

时间:2011-04-30 19:52:28

标签: php mysql

我想检查表中的字段是否已使用NOT NULL定义。

所以让我们说我有以下代码来创建一个SQL查询:

$sql = "CREATE TABLE `testdb`.`test` (`a` INT NULL, `b` INT NOT NULL DEFAULT \'2\');";

现在我想在php中编写一些代码,可以查询表中是否将字段b定义为NOT NULL。我想这里更一般的问题是如何在表中查询其字段的属性。

2 个答案:

答案 0 :(得分:4)

您可以使用information schema

中的IS_NULLABLE列

INFORMATION_SCHEMA提供对数据库元数据的访问。

元数据是有关数据的数据,例如数据库或表的名称,列的数据类型或访问权限。有时用于此信息的其他术语是数据字典和系统目录。

INFORMATION_SCHEMA是信息数据库,存储有关MySQL服务器维护的所有其他数据库的信息的位置。在INFORMATION_SCHEMA中,有几个只读表。它们实际上是视图,而不是基表,因此没有与之关联的文件。

SELECT column_name, 
       is_nullable 
FROM   information_schema.columns 
WHERE  table_schema = 'testdb' 
       AND table_name = 'test' 

答案 1 :(得分:1)

你走了:

$table = 'my_table';
$result = mysql_query('DESCRIBE `' . $table . '`');

while($item = mysql_fetch_assoc()){
    print_r($item); // this will output the properties of the table
}

$item中,您现在将拥有一个名为Null的属性,该属性为NOYES