如何在Oracle SQL Developer的“截止日期”字段中插入NULL
当我尝试插入一个空值时,我得到下面的错误如何在Oracle SQL Developer的“截止日期”字段中插入NULL,sql,oracle,Sql,Oracle,当我尝试插入一个空值时,我得到下面的错误 CREATE TABLE pledge ( pledge_ID NUMBER NOT NULL , pledge_endDate DATE NULL , pledge_startDate DATE NULL , pledge_amount DECIMAL(9,2) NULL CONSTRAINT Currency_1322638346 CHECK (pledge
CREATE TABLE pledge
(
pledge_ID NUMBER NOT NULL ,
pledge_endDate DATE NULL ,
pledge_startDate DATE NULL ,
pledge_amount DECIMAL(9,2) NULL CONSTRAINT Currency_1322638346 CHECK (pledge_amount >= 0),
artist_userID NUMBER NOT NULL,
follower_userID NUMBER NOT NULL,
CONSTRAINT XPKPledge PRIMARY KEY (pledge_ID),
CONSTRAINT gets FOREIGN KEY (artist_userID) REFERENCES ArtistMember (user_ID),
CONSTRAINT makes FOREIGN KEY (follower_userID) REFERENCES FollowerMember (user_ID)
);
SQL错误:ORA-00904::无效标识符
可能是因为您的外键
引用了一个不存在的列-检查列名拼写是否正确,这将解决此问题(然后您的CREATE TABLE
语句将起作用)
如果您只是在
'1-FEB-2016'
中使用字符串,Oracle将使用to_DATE()
函数隐式地尝试将字符串文字转换为NLS_DATE_FORMAT
会话参数作为格式掩码。如果它们匹配,那么它将工作,但这是一个客户端变量,因此可以更改,然后查询将在代码没有更改的情况下中断(这是调试的一个难题)。简单的答案是,通过使用到_date()
并指定格式掩码(根据上述查询)或使用ANSI日期文本日期“2016-02-01”
(独立于NLS设置)来比较日期值。在数字列中插入空字符串'
,Oracle将插入NULL
例如,col_2
的数据类型为日期字段或number(12,0)
(非日期字段的任何数据类型),SQL语句为col_2
设置值如下:
CREATE TABLE ArtistMember (
user_ID INT PRIMARY KEY
);
CREATE TABLE FollowerMember (
user_ID INT PRIMARY KEY
);
CREATE TABLE pledge (
pledge_ID INT CONSTRAINT XPKPledge PRIMARY KEY,
pledge_endDate DATE NULL,
pledge_startDate DATE NULL,
pledge_amount DECIMAL(9,2) NULL CONSTRAINT Currency_1322638346 CHECK (pledge_amount >= 0),
artist_userID INT NOT NULL CONSTRAINT gets REFERENCES ArtistMember (user_ID),
follower_userID INT NOT NULL CONSTRAINT makes REFERENCES FollowerMember (user_ID)
);
INSERT INTO ArtistMember VALUES ( 85275 );
INSERT INTO FollowerMember VALUES( 88128 );
INSERT INTO pledge VALUES(
559,
NULL, -- Use NULL and not 'NULL'
DATE '2016-02-01', -- Use a Date literal and not a string literal
3850,
85275,
88128
);
或
(它是
NULL
,而不是'NULL'
或“NULL”
)再次查看错误。insert
正在获取ORA-00942。ORA-00904来自创建表
。先把它修好。当您确实希望插入null时,它应该是null
,而不是'null'
——这是一个字符串文本,而不是null。而且不要像对待开始日期那样依赖于隐式日期转换。
CREATE TABLE ArtistMember (
user_ID INT PRIMARY KEY
);
CREATE TABLE FollowerMember (
user_ID INT PRIMARY KEY
);
CREATE TABLE pledge (
pledge_ID INT CONSTRAINT XPKPledge PRIMARY KEY,
pledge_endDate DATE NULL,
pledge_startDate DATE NULL,
pledge_amount DECIMAL(9,2) NULL CONSTRAINT Currency_1322638346 CHECK (pledge_amount >= 0),
artist_userID INT NOT NULL CONSTRAINT gets REFERENCES ArtistMember (user_ID),
follower_userID INT NOT NULL CONSTRAINT makes REFERENCES FollowerMember (user_ID)
);
INSERT INTO ArtistMember VALUES ( 85275 );
INSERT INTO FollowerMember VALUES( 88128 );
INSERT INTO pledge VALUES(
559,
NULL, -- Use NULL and not 'NULL'
DATE '2016-02-01', -- Use a Date literal and not a string literal
3850,
85275,
88128
);
insert into foo (col_1, col_2) values ('abc', '');
insert into foo (col_1, col_2) values ('abc', NULL);