Yii Cache, CDbCommand::execute() fail: SQLSTATE[23000]: Integrity constraint violation: 19 UNIQUE constraint failed: YiiCache.id - yii

I'm getting the following error with Yii cache
CDbCommand::execute() fail: SQLSTATE[23000]: Integrity constraint
violation: 19 UNIQUE constraint failed: YiiCache.id. La sentencia SQL
ejecutada fue: INSERT INTO YiiCache (id,expire,value) VALUES
('f5f5bcc0fd61886a71fba221738e512a',1550528514,:value).
How can I fix that?

Related

Error when loading table from MSSQL Server to Informix DB

I am trying to load a table from MSSQL - IBM Informix DB. Tables without Primary key are getting loaded but ones with Primary key are not loading and throwing following error
Stream component 'st_2_Informix_Target' terminated
Stream component failed at subtask 2, component st_2_Informix_Target
Error executing data handler
Handling new table 'dbo'.'region3' failed
execute create primary key failed, statement ALTER TABLE dbo.region3 ADD CONSTRAINT region3_PK__region3__3213E83F82CE48A3 PRIMARY KEY ( id )
RetCode: SQL_ERROR SqlState: 42000 NativeError: -201 Message: [Informix][Informix ODBC Driver][Informix]A syntax error has occurred.
Failed (retcode -1) to execute statement: 'ALTER TABLE dbo.region3 ADD CONSTRAINT region3_PK__region3__3213E83F82CE48A3 PRIMARY KEY ( id )'
Someone (I guess SQLServer or DMS) is trying to add a primary key to the Informix table using SQLServer SQL syntax which is not valid in Informix.
> ALTER TABLE dbo.region3 ADD CONSTRAINT region3_PK__region3__3213E83F82CE48A3 PRIMARY KEY ( id );
201: A syntax error has occurred.
Error in line 1
Near character position 40
> ALTER TABLE dbo.region3 ADD CONSTRAINT PRIMARY KEY ( id ) CONSTRAINT region3_PK__region3__3213E83F82CE48A3;
Table altered.
>
I suggest to check if there are any options to disable PK creation when doing the load task.

Oracle SQL Error Invalid Identifiers

EDIT: I FIGURED OUT THE NULL PROBLEM. Now i am confused on the Invalid Identifier.
I have the task of translating an ER diagram to a Table created in SQL.
I have my code posted below, i am however getting quite a few different errors. They are mostly re-occuring errors but there are 2-3 different ones,
Could anyone help me try to solve this?
COMMIT;
CREATE TABLE Team (
Team_ID INTEGER GENERATED ALWAYS AS IDENTITY,
Team_Name NVARCHAR2(40) NOT NULL,
Team_Manager VARCHAR2(20),
CONSTRAINT kkeyconst PRIMARY KEY(Team_ID)
);
COMMIT;
insert into Team(TEAM_NAME, TEAM_MANAGER) VALUES ('Red Sox', 'Jon');
insert into Team(TEAM_NAME, TEAM_MANAGER) VALUES('White Sox', 'Tony');
CREATE TABLE Driver (
Driver_id INTEGER,
Team_ID INTEGER NOT NULL,
Driver_age INTEGER NOT NULL,
Driver_Name VARCHAR(20) NOT NULL,
CONSTRAINT DriverAge CHECK (Driver_age BETWEEN '19' AND '65'),
CONSTRAINT driverpk PRIMARY KEY(Driver_ID),
CONSTRAINT Team_FK FOREIGN KEY (Team_ID) REFERENCES Team(Team_ID)
);
COMMIT;
INSERT INTO Driver(DRIVER_AGE,DRIVER_NAME) VALUES ('21','jon');
INSERT INTO Driver(DRIVER_AGE,DRIVER_NAME) VALUES ('43','Tony');
SELECT * FROM DRIVER;
CREATE TABLE Participation (
Team_ID INTEGER,
Driver_ID INTEGER NOT NULL,
Points INTEGER,
CONSTRAINT Team_FK FOREIGN KEY (Team_ID) REFERENCES Team(Team_ID),
CONSTRAINT Driver_FK FOREIGN KEY(Driver_ID) REFERENCES Driver(Driver_ID)
);
COMMIT;
insert into Participation(Participation_Points) VALUES (150);
INSERT INTO Participation(Participation_Points) VALUES(300);
SELECT * FROM PARTICIPATION;
CREATE TABLE Finish (
Driver_ID INTEGER,
Finish_Position INTEGER NOT NULL,
Finish_Result VARCHAR2(50) NOT NULL,
CONSTRAINT Driver_FK FOREIGN KEY (Driver_ID) REFERENCES Driver(Driver_id)
);
COMMIT;
INSERT INTO Finish(Driver_ID, Finish_POSITION, Finish_Result) VALUES ('3','1','Winner');
INSERT INTO Finish(Driver_ID, Finish_POSITION, Finish_Result) VALUES ('4','3','ThirdPlace');
SELECT * FROM FINISH;
CREATE TABLE RaceComponent (
RC_ID INTEGER,
Driver_ID INTEGER,
RC_Type VARCHAR(25),
CONSTRAINT Rcpk PRIMARY KEY(RC_ID),
CONSTRAINT Driver_FK FOREIGN KEY (Driver_ID) REFERENCES Driver(Driver_ID)
);
COMMIT;
INSERT INTO RaceComponent(RC_ID,RC_TYPE) VALUES ('47','Hot Wheels');
INSERT INTO RaceComponent(RC_ID,RC_TYPE) VALUES ('3', 'Tonka');
SELECT * FROM RACECOMPONENT;
CREATE TABLE Race (
Race_Id INTEGER NOT NULL,
RC_ID INTEGER NOT NULL,
Race_Title VARCHAR(30) NOT NULL,
Race_Location VARCHAR(50) NOT NULL,
Race_Date DATE,
CONSTRAINT RACE_PK PRIMARY KEY(RACE_ID),
CONSTRAINT RC_FK FOREIGN KEY (RC_ID) REFERENCES RaceComponent(RC_ID)
);
COMMIT;
INSERT INTO Race(RACE_TITLE, RACE_LOCATION, RACE_DATE) VALUES ('Tonys Race','Moncton', DATE '2016-04-25');
INSERT INTO Race(Race_Title, Race_Location, Race_Date) VALUES ('Mikes Racing','San-Francisco', DATE '2015-04-25');
SELECT * FROM RACE;
ERROR:
Error starting at line : 29 in command -
INSERT INTO Driver(DRIVER_AGE,DRIVER_NAME) VALUES ('21','jon')
Error report -
SQL Error: ORA-01400: cannot insert NULL into ("STUDENT"."DRIVER"."DRIVER_ID")
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
Error starting at line : 30 in command -
INSERT INTO Driver(DRIVER_AGE,DRIVER_NAME) VALUES ('43','Tony')
Error report -
SQL Error: ORA-01400: cannot insert NULL into ("STUDENT"."DRIVER"."DRIVER_ID")
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
DRIVER_ID TEAMS_ID DRIVER_AGE DRIVER_NAME
---------- ---------- ---------- --------------------
1 21 jon
2 43 Tony
Error starting at line : 34 in command -
CREATE TABLE Participation (
Team_ID INTEGER,
Driver_ID INTEGER NOT NULL,
Points INTEGER,
CONSTRAINT Team_FK FOREIGN KEY (Team_ID) REFERENCES Team(Team_ID),
CONSTRAINT Driver_FK FOREIGN KEY(Driver_ID) REFERENCES Driver(Driver_ID)
)
Error report -
SQL Error: ORA-00955: name is already used by an existing object
00955. 00000 - "name is already used by an existing object"
*Cause:
*Action:
Commit complete.
Error starting at line : 43 in command -
insert into Participation(Participation_Points) VALUES (150)
Error at Command Line : 43 Column : 27
Error report -
SQL Error: ORA-00904: "PARTICIPATION_POINTS": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error starting at line : 44 in command -
INSERT INTO Participation(Participation_Points) VALUES(300)
Error at Command Line : 44 Column : 27
Error report -
SQL Error: ORA-00904: "PARTICIPATION_POINTS": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
TEAMNAME_ID DRIVER_ID
--------------------------------------- ----------
POINTSEARNED
---------------------------------------
150
150
150
Commit complete.
Error starting at line : 57 in command -
INSERT INTO Finish(Driver_ID, Finish_POSITION, Finish_Result) VALUES ('3','1','Winner')
Error at Command Line : 57 Column : 48
Error report -
SQL Error: ORA-00904: "FINISH_RESULT": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error starting at line : 58 in command -
INSERT INTO Finish(Driver_ID, Finish_POSITION, Finish_Result) VALUES ('4','3','ThirdPlace')
Error at Command Line : 58 Column : 48
Error report -
SQL Error: ORA-00904: "FINISH_RESULT": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
no rows selected
Commit complete.
Error starting at line : 71 in command -
INSERT INTO RaceComponent(RC_ID,RC_TYPE) VALUES ('47','Hot Wheels')
Error report -
SQL Error: ORA-00001: unique constraint (STUDENT.RCPK) violated
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
Error starting at line : 72 in command -
INSERT INTO RaceComponent(RC_ID,RC_TYPE) VALUES ('3', 'Tonka')
Error report -
SQL Error: ORA-00001: unique constraint (STUDENT.RCPK) violated
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
RC_ID DRIVER1_ID RC_TYPE
---------- ---------- -------------------------
47 Hot Wheels
3 Tonka
Commit complete.
Error starting at line : 89 in command -
INSERT INTO Race(RACE_TITLE, RACE_LOCATION, RACE_DATE) VALUES ('Tonys Race','Moncton', DATE '2016-04-25')
Error report -
SQL Error: ORA-01400: cannot insert NULL into ("STUDENT"."RACE"."RACE_ID")
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
Error starting at line : 90 in command -
INSERT INTO Race(Race_Title, Race_Location, Race_Date) VALUES ('Mikes Racing','San-Francisco', DATE '2015-04-25')
Error report -
SQL Error: ORA-01400: cannot insert NULL into ("STUDENT"."RACE"."RACE_ID")
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
RACE_ID RC_ID RACE_TITLE
---------- ---------- ------------------------------
RACE_LOCATION RACE_DATE
-------------------------------------------------- ---------
1 Tonys Race
Moncton 25-APR-16
43 MikesRacing
San-Francisco 25-APR-15

Issue with check constraint

I want to create a check constraint that allow only session of date end session greater than
date begin session
like this :
alter table Sessionn add constraint checkdate_CK
check ( Sessionn.datebeginsessionstage <Sessionn.dateendsessionstage)
but I have a probleme message :
Msg 547, Level 16, State 0, Line 1
The ALTER TABLE statement conflicted with the CHECK constraint "checkdate_CK". The conflict occurred in database "V12013", table "dbo.Sessionn".

invalid character when running liquibase script

When I run the script below in Sql Developer it correctly creates my global temporary table but when I run my liquibase script it fails because of "invalid character". Anyone know why this fails?
In Sql Developer (works)
CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;
Liquibase xml (fails with below stacktrace)
<changeSet id="createGlobalTemporaryTableForTransactionsMove" author="me" >
<preConditions onFail="MARK_RAN">
<not>
<tableExists tableName="TransactionsToMove"/>
</not>
</preConditions>
<sql splitStatements="false" endDelimiter=";"><![CDATA[
CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;
]]>
</sql>
</changeSet>
Stacktrace
SEVERE 2013-11-14 09:10:liquibase: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;
java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1033)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318)
at liquibase.executor.jvm.JdbcExecutor$1ExecuteStatementCallback.doInStatement(JdbcExecutor.java:92)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:105)
at liquibase.database.AbstractDatabase.execute(AbstractDatabase.java:1014)
at liquibase.database.AbstractDatabase.executeStatements(AbstractDatabase.java:998)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:317)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:27)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:58)
at liquibase.Liquibase.update(Liquibase.java:113)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.runChangelog(LiquibaseDatabaseManager.java:177)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.create(LiquibaseDatabaseManager.java:145)
at se.mypackage.exbo.database.DatabaseManager.dropAndCreate(DatabaseManager.java:349)
at se.mypackage.exbo.database.DatabaseManager.main(DatabaseManager.java:720)
SEVERE 2013-11-14 09:10:liquibase: Change Set db/scripts/movetohistorical-oracleserver.xml::createGlobalTemporaryTableForTransactionsMove::marbe failed. Error: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
liquibase.exception.DatabaseException: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:105)
at liquibase.database.AbstractDatabase.execute(AbstractDatabase.java:1014)
at liquibase.database.AbstractDatabase.executeStatements(AbstractDatabase.java:998)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:317)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:27)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:58)
at liquibase.Liquibase.update(Liquibase.java:113)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.runChangelog(LiquibaseDatabaseManager.java:177)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.create(LiquibaseDatabaseManager.java:145)
at se.mypackage.exbo.database.DatabaseManager.dropAndCreate(DatabaseManager.java:349)
at se.mypackage.exbo.database.DatabaseManager.main(DatabaseManager.java:720)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1033)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318)
at liquibase.executor.jvm.JdbcExecutor$1ExecuteStatementCallback.doInStatement(JdbcExecutor.java:92)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
... 11 more
INFO 2013-11-14 09:10:liquibase: Successfully released change log lock
Exception in thread "main" se.mypackage.exbo.database.DatabaseManagerException: Liquibase changelog update failed using changelog: db-main-create-13.4.xml, reason: Migration failed for change set db/scripts/movetohistorical-oraclese
Reason: liquibase.exception.DatabaseException: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
:
Caused By: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
:
Caused By: ORA-00911: invalid character
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.runChangelog(LiquibaseDatabaseManager.java:180)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.create(LiquibaseDatabaseManager.java:145)
at se.mypackage.exbo.database.DatabaseManager.dropAndCreate(DatabaseManager.java:349)
at se.mypackage.exbo.database.DatabaseManager.main(DatabaseManager.java:720)
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set db/scripts/movetohistorical-oracleserver.xml::createGlobalTemporaryTableForTransactionsMove::marbe:
Reason: liquibase.exception.DatabaseException: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
:
Caused By: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
:
Caused By: ORA-00911: invalid character
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:347)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:27)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:58)
at liquibase.Liquibase.update(Liquibase.java:113)
at se.mypackage.exbo.database.liquibase.LiquibaseDatabaseManager.runChangelog(LiquibaseDatabaseManager.java:177)
... 3 more
Caused by: liquibase.exception.DatabaseException: Error executing SQL CREATE GLOBAL TEMPORARY TABLE TransactionsToMove(
TransactionId NUMBER(38,0) NOT NULL,
PRIMARY KEY (TransactionId))
ON COMMIT DELETE ROWS;: ORA-00911: invalid character
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:62)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:105)
at liquibase.database.AbstractDatabase.execute(AbstractDatabase.java:1014)
at liquibase.database.AbstractDatabase.executeStatements(AbstractDatabase.java:998)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:317)
... 7 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1033)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318)
at liquibase.executor.jvm.JdbcExecutor$1ExecuteStatementCallback.doInStatement(JdbcExecutor.java:92)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
... 11 more
The semicolon is a command terminator used in client-side applications such as Oracle SQL*Plus.
Is is usually not needed when invoking a db command through a Prepared Statement or a similar technology.
Clearly: DROP SEMICOLONS from Liquibase
Semicolons are not tolerated properly with Liquibase.
SQL Developer expects you to use semicolons.
Copying-pasting statments from one to the other will get you into trouble.
Some attempts of explaining can be found on the the web e.g:
http://forum.liquibase.org/topic/formatted-sql-enddelimiter-issue
It is worth noticing that Oracle themselves have different approach to semicolons: SQL*Plus commands do not need to be termianted with semicolon; whereas statements are supposed to.

SQL Error: ORA-00904: : invalid identifier in CREATE AS SELECT

I am trying to create a table from 2 other tables in Oracle SQL Developer:
CREATE TABLE share_stock(
share_id NUMBER(6,0),
share_price NUMBER(10,2),
company_id NUMBER(6,0),
company_name VARCHAR2(50),
ticker_symbol VARCHAR2(4),
AS SELECT share_price.share_price_id, share_price.price, share_price.company_id, company.name, company.ticker_symbol
FROM share_price, company
WHERE share_price.company_id = company.company_id,
CONSTRAINT sh_pk PRIMARY KEY (share_price.share_price_id),
CONSTRAINT sh_pr_fk FOREIGN KEY (share_price.share_price_id) REFERENCES share_price(share_price_id)
);
Basically I am trying to perform a CREATE AS SELECT, but I am getting this error:
Error at Command Line:294 Column:28 Error report: SQL Error:
ORA-00904: : invalid identifier
00904. 00000 - "%s: invalid identifier"
I have tried to correct my syntax and I have not managed to get it right so far,
Any ideas would be helpful,
Thanks in advance.
Try this way:
CREATE TABLE share_stock
AS
SELECT SP.share_price_id as share_id ,
SP.price as share_price, SP.company_id, C.name,
C.ticker_symbol
FROM share_price SP
join company C on SP.company_id = C.company_id;
alter table share_stock
add CONSTRAINT sh_pk PRIMARY KEY (share_id);
alter table share_stock
add CONSTRAINT sh_pr_fk FOREIGN KEY (share_id)
REFERENCES share_price(share_price_id);
CONSTRAINT sh_pk PRIMARY KEY (share_price.share_price_id),
CONSTRAINT sh_pr_fk FOREIGN KEY (**share_price.**share_price_id) REFERENCES share_price(share_price_id)
);
Your code doesn't work because ORACLE doesn't know what is share_price.shareprice_id???
You should write share_id, that is the column you want to be a primary key for the table share_stock.
Kind regards,
MJ.