我使用以下代码创建了一个表:
CREATE TABLE GLASACKO_MESTO(
"ID_glasackog_mesta" NUMBER(10, 0) PRIMARY KEY,
"Broj_registrovanih_biraca" NUMBER NOT NULL,
"Broj_glasackog_mesta" NUMBER NOT NULL,
"Izborna_jedinica" NUMBER NOT NULL
);
CREATE INDEX GLASACKO_MESTO_BROJ_REG_B ON GLASACKO_MESTO("Broj_registrovanih_biraca");
以及:
CREATE SEQUENCE "GLASACKO_MESTO_ID_SEQ"
MINVALUE 1
MAXVALUE 9999999999
INCREMENT BY 1
START WITH 101
CACHE 5
NOORDER
NOCYCLE;
CREATE OR REPLACE TRIGGER "GLASACKO_MESTO_AUTO_PK"
BEFORE INSERT
ON GLASACKO_MESTO
FOR EACH ROW
BEGIN
:NEW."ID_glasackog_mesta" := GLASACKO_MESTO_ID_SEQ.NEXTVAL;
END;
正如我所看到的,看起来一切都创建成功,但当尝试执行以下INSERT命令时,我得到错误。
INSERT INTO GLASACKO_MESTO(Broj_registrovanih_biraca,Broj_glasackog_mesta,Izborna_jedinica)
values ('2','3','4');
并尝试设置手动ID
INSERT INTO GLASACKO_MESTO(ID_glasackog_mesta,Broj_registrovanih_biraca,Broj_glasackog_mesta,Izborna_jedinica)
values (1,'2','3','4');
但没什么区别。我该怎么解决这个问题?
2条答案
按热度按时间k3bvogb11#
您使用了字符串文字
'2','3','4'
,但列类型被定义为number
。你可能想要这个:此外,错误消息指出
IZBORNA_JEDINICA
是无效的标识符。这意味着在SQL或表定义中可能存在拼写错误或奇怪的unicode字符,因此该列名与表中定义的名称不匹配。ct2axkht2#
您创建了一个具有区分大小写的列的表(因为您在列名周围加上了引号),所以您总是需要引用带有引号且大小写相同的列。重新创建不使用引号括住列名的表。这将保存您的时间和头痛。
检查以下示例:
现在创建一个没有引号的表:
更多信息here