我的代码有个小问题。我添加了一个默认约束,但由于某些原因它不想工作。我的代码:
CREATE TABLE oc.students
(
stud_id INT PRIMARY KEY IDENTITY (1,1),
first_name VARCHAR(50) NOT NULL,
mid_name VARCHAR(50),
last_name VARCHAR(50) NOT NULL,
DOB DATE,
email VARCHAR (255) NOT NULL,
country VARCHAR(50) NOT NULL,
phone VARCHAR(20),
reg_date DATE NOT NULL
);
ALTER TABLE oc.students
ADD DEFAULT GETDATE() FOR [reg_date];
INSERT INTO oc.students (first_name, mid_name, last_name, DOB, email, country, phone, reg_date)
VALUES ('John', '', 'Smith', '1986-12-24', 'js@gmail.com', 'Malta', 123456789, '')
SELECT *
FROM oc.students
结果:
有什么问题吗?
1条答案
按热度按时间aamkag611#
''
以及NULL
是不一样的(好吧,在除oracle以外的任何数据库中)。第一个字符串恰好没有字符。第二个是sql常量值,它具有“unknown value”的语义,通常用于缺少的值。您正在插入
''
这被解释为0
,转换为基准日期。实际上,这个术语是epoch,它是a用来开始计算日期/时间值的日期。如果需要默认值,可以使用:
或者,更常见的情况是,该列被省略了: