加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

如何在日期字段Oracle SQL Developer中插入NULL

发布时间:2021-01-25 19:23:55 所属栏目:站长百科 来源:网络整理
导读: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 NUM

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)
);

当我尝试插入空值时,我得到以下错误.

INSERT INTO pledge VALUES(559,'null','1-FEB-2016',3850,85275,88128);

Error report -
SQL Error: ORA-00904: : invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error starting at line : 209 in command -
INSERT INTO pledge VALUES(559,'NULL',88128)
Error at Command Line : 209 Column : 13
Error report -
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

解决方法

SQL错误:ORA-00904 ::可能导致无效的标识符,因为您的FOREIGN KEY引用了一个不存在的列 – 检查列名是否拼写正确并且应该解决它(然后您的CREATE TABLE语句将起作用) ).

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,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,88128
);

如果您只使用’1-FEB-2016’中的字符串,那么Oracle将隐式尝试使用TO_DATE()函数转换字符串文字,并使用NLS_DATE_FORMAT会话参数作为格式掩码.如果它们匹配,那么它将工作,但这是一个客户端变量,因此可以更改,然后查询将中断而代码没有更改(并且很难调试).简单的答案是确保您使用TO_DATE()和指定格式掩码(根据上面的查询)比较日期值,或使用ANSI日期文字DATE’2016-02-01′(它独立于NLS设置).

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读