-1

我很抱歉这个愚蠢的问题。

我有一个这样的数据库结构:

CREATE TABLE "CLIENT" (
  "AFM" INTEGER not null primary key,
  "FIRSTNAME" VARCHAR(30),
  "LASTNAME" VARCHAR(30),
  "ADDRESS" VARCHAR(30),
  "PHONE" INTEGER,
  "MAIL" VARCHAR(60)
);

问题:

1)当我按下Netbeans上的“运行SQL”按钮时,数据库就创建好了。如果我编辑 e 字段,例如将字段“邮件”更改为“电子邮件”,我再次按下相同的按钮,但由于数据库已经存在,我得到一个错误。如何编辑数据库中字段的名称?

2) 正如您在上面看到的,我希望字段“LASTNAME”由 <30 个字符组成。如果我想要该字段相同:“AFM” INTEGER ?? 如果我写:“AFM” INTEGER(10) 我得到一个错误。

先感谢您。

4

2 回答 2

2

为了限制数值列的值,您需要使用检查约束:

CREATE TABLE CLIENT 
(
    AFM INTEGER not null primary key,
    FIRSTNAME VARCHAR(30),
    LASTNAME VARCHAR(30),
    ADDRESS VARCHAR(30),
    PHONE INTEGER,
    MAIL VARCHAR(60),
    constraint check_afm check (afm <= 10)
);

尽管我看不到您可能必须限制主键列的值的原因。

如果该表已经存在,您将收到错误消息。如果您的表中还没有数据(或者您不介意丢失它),您可以使用以下方法简单地删除它:

drop table client;

运行上面的 CREATE TABLE。

否则(如果你想保留数据)你需要一个 alter table 语句:

alter table client 
  add constraint check_afm check (afm <= 10);

请注意,如果表中有任何行违反该检查约束,这将失败。

于 2013-02-18T12:50:24.723 回答
0

1)您不能两次创建表。如果表已经存在,您需要使用“ alter table ”来更改字段名。

2)你得到哪个错误?作为旁注:Integer(n) 定义显示宽度(请参见此处)而不是值范围,以防您不知道这一事实。

于 2013-02-18T10:03:49.043 回答