我有下表
CREATE TABLE `Foo` (
`id` int NOT NULL ,
`FirstName` varchar(255) NULL ,
`LastName` varchar(255) NOT NULL DEFAULT 'NONE' ,
PRIMARY KEY (`id`)
);
当我运行以下查询时,它采用默认值= NONE
INSERT INTO Foo ( `FirstName`) VALUES('FOO');
当我运行以下查询时
INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', NULL);
它出错了
`[Err] 1048 - Column 'LastName' cannot be null`
我想如果value为NULL,那么mysql应该使用默认值..任何更新?
答案 0 :(得分:1)
试试这个
使用NULL
代替NOT NULL
CREATE TABLE `Foo` (
`id` int NOT NULL ,
`FirstName` varchar(255) NULL ,
`LastName` varchar(255) NULL DEFAULT 'NONE' ,
PRIMARY KEY (`id`)
);
并像这样查询
使用DEFAULT
代替NULL
INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);
答案 1 :(得分:0)
尝试删除NOT NULL约束。
INSERT INTO Foo(<input type="text" id="myInput" placeholder="Search for names.." title="Type in a name">
<ul id="myUL"></ul>
)VALUES('FOO');
当你没有手动向lastname插入任何值时,你实际上是在表中插入'none'(默认值),因此NOT NULL约束传递。
INSERT INTO Foo(FirstName
,FirstName
)VALUES('FOO',NULL);
在这里,您手动将NULL插入lastname,因此您实际上是在表中插入'NULL',因此NOT NULL约束失败。
答案 2 :(得分:0)
当您使用NULL时,它意味着您要将NULL设置为值,这对于NOT NULL列不会发生。
您可以使用DEFAULT
显式插入默认值:
INSERT INTO Foo ( `FirstName`, `LastName` ) VALUES('FOO', DEFAULT);