【发布时间】:2021-07-26 09:43:21
【问题描述】:
我正在尝试运行以下 SQL 语句
--dropping customer TABLE--
DROP TABLE tp_ladder;
--creating ladder TABLE
CREATE TABLE tp_ladder (
ladder_id INTEGER,
ladder_type VARCHAR(50),
ladder_name VARCHAR(50) NOT NULL,
ladder_discount DECIMAL(3,2),
ladder_price DECIMAL(8,2) NOT NULL,
ladder_weight DECIMAL(5,2),
ladder_height DECIMAL(5,2),
ladder_rating DECIMAL(10,2),
warehouse_id INTEGER
);
--creating primary key for ladder table
ALTER TABLE tp_ladder
ADD CONSTRAINT tp_ladder_ladder_id
PRIMARY KEY(ladder_id);
但是我收到错误消息:
无法在表 'tp_ladder' 中的可空列上定义 PRIMARY KEY 约束
有什么建议吗?
【问题讨论】:
-
MySQL != SQL Server - 请更正您的标签。说真的,不要在你的列名前加上表名(梯形图)——你只是在为自己创造更多的输入而没有任何好处。
-
你为什么要让你的 PK 为空?这可能是一个设计缺陷。
-
这能回答你的问题吗? Cannot add primary key
-
错误信息有什么不清楚的地方?您需要将
ladder_id定义为not null -
@HANA 。 . .有趣。这似乎是 SQL Server 的限制(它适用于其他数据库)——考虑到 SQL Server 如何表示
NULL值并且该表没有数据,我有点惊讶。相反,只需在表ladder_id INTEGER PRIMARY KEY中内联定义约束。
标签: sql sql-server ddl