【发布时间】:2015-08-07 04:56:47
【问题描述】:
我想创建一个表,但出现错误:
他为什么不喜欢我的约束? 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));
当我想写“personennummer NUMBER(5)”时,我也会遇到同样的错误 但它是个人识别号,所以每个 personennummer 的长度都是 5,例如第一个有 '00001' 等等
希望你能回答我的问题:)
【问题讨论】:
-
显示导致此问题的实际 sql。
-
为什么要给这个约束起个名字?
-
实际的 sql 现在在我在大学学到的帖子中 - 所以我想以后可以更改它吗? ://
-
你愿意吗?曾经?真的吗?
-
@KarolyHorvath:其他数据库,例如 Oracle,确实为
NOT NULL约束分配了一个名称。如果没有提供名称,Oracle 会分配一个系统生成的名称,例如SYS_nnnnnn。并且一些开发人员/DBA 更喜欢为约束使用一致的名称,而不是在每个环境(开发、测试、质量保证、预生产、生产)中都不同的系统生成名称。
标签: mysql constraints notnull