将必需的列添加到数据库表

时间:2013-06-14 16:45:58

标签: php mysql database zen-cart

如果我要为我的客户添加一个已经存在的数据库的列(即EIN税号),那么当我请求放置该信息时,对那些可能在该字段中没有任何内容的现有客户会有任何影响在客户注册表格中?

我们有超过3000名客户,因此我不想通过在任何新客户帐户中添加它来打断它们。

4 个答案:

答案 0 :(得分:3)

当您将列添加到数据库时,可以设置列的默认值,这样我就不会太在意了。

ALTER TABLE `table_name` ADD COLUMN `column_name` int(10) NOT NULL DEFAULT 0

最大的问题是您在数据库中添加行的现有方式,以及您事先定义列。

例如:

INSERT INTO `table_name` VALUES ('col1','col2','col3').

由于列数不匹配,上述说法会失败,因为您现在有4列(或多列)。

INSERT INTO `table_name` (col1,col2,col3) VALUES ('col1','col2','col3')

上面的陈述可以正常工作,因为您要预先定义列,或者下面的列:

INSERT INTO `table_name` SET col1='col1',col2='col2',col3='col3'

答案 1 :(得分:2)

如果这是针对Zen Cart的,那么已经有了一个附加功能。

请参阅http://www.zen-cart.com/downloads.php?do=file&id=1137 - 客户注册的额外字段(创建帐户)页面。

答案 2 :(得分:1)

如果您要求的是NOT NULL,那么它会将列设置为所有3000条记录的列DEFAULT值。

如果你的意思是PRIMARY KEY,默认情况下是UNIQUE,那么你必须为所有3000条记录提供一个值,或者你可以将列设置为AUTO INCREMENT并且它会生成值

答案 3 :(得分:1)

我将假设您使用MySQL或SQL作为数据库,默认情况下,您可以在数据库中的任何位置设置新列,而不会中断当前信息。您还可以为列设置DEFAULT值,以便表中的每个客户都将该值设置为其帐户。我还建议如果更改数据库,请查看插入查询,因为如果您有基本查询(下面)

INSERT INTO `customers` VALUES(NULL,'myUsername','myPassword','myEmail');

它将不再起作用。您将收到和SQL错误。解决此问题的最简单方法是设置直接查询(下方)

INSERT INTO `customers` (`id`,`username`,`password`,`email`) VALUES (NULL,'myUsername','myPassword','myEmail');

希望这能很好地回答你的问题。快乐的编码。