MySQL - 约束 NOT NULL 错误 1064

MySQL - Constraint NOT NULL Error 1064

我想创建一个 table,但出现错误:

他为什么不喜欢我的约束? mysql 与 sql 有何不同?因为 2 年前我在 sql 中创建了相同的 table 没有问题 :(

这里是全部代码

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));

当我想写 "personennummer NUMBER(5)" 时我也遇到了同样的错误 但它是一个个人识别号码,所以每个 personennummer 都有相同的长度 5 例如第一个有 '00001' 等等

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

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,do 允许您为 NOT NULL 约束命名。我是 Oracle,我认为 NOT NULL 约束在字典中显示为约束。因此,我们想给出一个特定的名称,而不是分配一个系统生成的 SYS_nnnnnn 名称,这是可以理解的。在 MySQL 中,NOT NULL 作为列的属性处理,而不是单独的约束。