gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:10:45 24 4
gpt4 key购买 nike

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','1-FEB-2016', 3850, 85275, 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 Error: ORA-00904: : invalid identifier可能是因为你的 FOREIGN KEY s 正在引用一个不存在的列 - 检查列名是否拼写正确并且应该可以解决它(然后您的 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,
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
);

如果你只是使用 '1-FEB-2016' 中的字符串然后 Oracle 将尝试使用 TO_DATE() 隐式地尝试转换字符串文字。功能与 NLS_DATE_FORMAT session 参数作为格式掩码。如果它们匹配,那么它将起作用,但这是一个客户端变量,因此可以更改,然后查询将在代码未更改的情况下中断(并且调试起来很痛苦)。简单的答案是确保您通过使用 TO_DATE() 来比较日期值。并指定格式掩码(根据上面的查询)或使用 ANSI 日期文字 DATE '2016-02-01' (这与 NLS 设置无关)。

关于sql - 如何在日期字段中插入 NULL Oracle SQL Developer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com