MySQL - 约束NOT NULL错误1064

时间:2015-05-25 17:04:55

标签: mysql constraints notnull

我想创建一个表,我收到一个错误: My Errorcode

为什么他不喜欢我的约束? mysql和sql有什么不同?因为2年前我在sql中创建了同一个表没有问题:(

这里是整个代码

CREATE table Mitarbeiter(
Mitarbeiternummer INT(5),
Personennummer INT(5) constraint not_null_mitarbpersnr NOT NULL,
Gehalt INT(10),
Chef_Mitarbeiternummer INT(5),
constraint mitarbeiter_pk primary key (Mitarbeiternummer),
constraint unique_mitpernr UNIQUE (Personennummer),
constraint marb_fk_persnr foreign key(Personennummer) references person(Personennummer) ON DELETE CASCADE,
constraint marb_fk_chef foreign key (Chef_Mitarbeiternummer) references mitarbeiter(Mitarbeiternummer));

当我想写#34; personennummer NUMBER(5)"时,我也会得到同样的错误。 但它是一个个人身份证号码,所以每个人都有相同的长度,例如第一个人有#00; 00001'等等

我希望你能回答我的问题:)

1 个答案:

答案 0 :(得分:2)

MySQL不支持语法为NOT NULL约束命名。

这将引发错误:

  Personennummer INT(5) constraint not_null_mitarbpersnr NOT NULL
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

要在MySQL中的列上声明NOT NULL约束,您必须省略关键字CONSTRAINT和名称。此语法有效:

  Personennummer INT(5) NOT NULL

参考:https://dev.mysql.com/doc/refman/5.5/en/create-table.html

请注意CONSTRAINT后面的语法不允许NOT NULLNOT NULL作为列定义的一部分包含在内。

MySQL与其他数据库不同,例如Oracle,允许您为NOT NULL约束命名。我是Oracle,我认为NOT NULL约束在字典中显示为约束。因此,我们想要给出一个特定的名称,而不是分配系统生成的SYS_nnnnnn名称,这是可以理解的。在MySQL中,NOT NULL作为列的属性处理,而不是作为单独的约束。