INSERT语句中出现"此处不允许列"错误

joh*_*ohn 24 sql oracle

我通过这样做创建了这个名为LOCATION的表:

CREATE TABLE LOCATION(
POSTCODE VARCHAR(10) PRIMARY KEY,
STREET_NAME VARCHAR(20),
CITY VARCHAR(20));
Run Code Online (Sandbox Code Playgroud)

当我尝试在表格中添加一些日期时,它不起作用,说有错误

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE');
Run Code Online (Sandbox Code Playgroud)

错误在说

列不允许在这里

ska*_*man 47

你错过了第一个值的引号,它应该是

INSERT INTO LOCATION VALUES('PQ95VM', 'HAPPY_STREET', 'FRANCE');
Run Code Online (Sandbox Code Playgroud)

顺便提一下,出于可读性,可维护性和健壮性的原因,建议您明确在INSERT中指定列名称,即

INSERT INTO LOCATION (POSTCODE, STREET_NAME, CITY) VALUES ('PQ95VM', 'HAPPY_STREET', 'FRANCE');
Run Code Online (Sandbox Code Playgroud)

  • +1 特别是对于实际命名列的建议,它是一种 SQL 反模式,暗示插入中的列,并且当数据库结构发生变化时确实会产生一些不幸的结果。 (3认同)

pet*_*ula 6

我犯了一个错误,使用了错误的引号。我在值列表中使用双引号而不是单引号作为字符串分隔符。Oracle 中的双引号用作列标识符中的分隔符,与 MySQL 中双引号用于括起字符串文字不同。

INSERT INTO MYUSERS VALUES( 'Name', "Surname");  // Wrong

INSERT INTO MYUSERS VALUES( 'Name', 'Surname'); // Correct, Surname must be in single quotes
Run Code Online (Sandbox Code Playgroud)


Vij*_*van 5

有一段时间,在执行插入查询时,我们面临:

此处不允许使用列

错误。因为字符串参数中可能缺少引号。在字符串参数中添加引号并尝试执行。

尝试这个:

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE');
Run Code Online (Sandbox Code Playgroud)

或者

INSERT INTO LOCATION (ID, FIRST_NAME, LAST_NAME) VALUES('PQ95VM','HAPPY_STREET','FRANCE');
Run Code Online (Sandbox Code Playgroud)

http://www.drtuts.com/oracle-error-column-not-allowed-here/