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