ORA-00907: Accounts表缺少右括号错误排查求助
ORA-00907错误原因及修正方案
错误出在Accounts表的Balance字段定义上,Oracle语法要求**DEFAULT子句必须位于NOT NULL之前**,你的写法是NOT NULL DEFAULT 0,违反了这个规则,导致数据库抛出括号缺失的错误提示(Oracle部分错误提示不够精准)。
另外补充两个非强制但建议的优化点:
- 主键列无需额外添加
NOT NULL约束,因为主键本身就隐含非空属性,属于冗余写法 Transaction是Oracle保留字,建议表名改为Transactions(你当前已使用该名称,无问题)
修正后的建表SQL如下:
-- Table: Users CREATE TABLE Users ( User_ID NUMBER(10) PRIMARY KEY, Username VARCHAR(50) UNIQUE NOT NULL, Email VARCHAR(100) UNIQUE NOT NULL, Password VARCHAR(100) NOT NULL, Registration_Date DATE DEFAULT SYSDATE NOT NULL, LastLogin_Date DATE NOT NULL ); -- Table: Profile CREATE TABLE Profiles ( Profile_ID NUMBER(10) PRIMARY KEY, User_ID NUMBER(10) UNIQUE NOT NULL, FirstName VARCHAR(50) NOT NULL, LastName VARCHAR(50) NOT NULL, DateOfBirth DATE NOT NULL, Gender VARCHAR(10) NOT NULL, Address VARCHAR(255) NOT NULL, PhoneNumber VARCHAR(15) NOT NULL, FOREIGN KEY (User_ID) REFERENCES Users(User_ID) ); -- Table: Accounts(修正Balance字段顺序) CREATE TABLE Accounts ( Account_Number VARCHAR(13) PRIMARY KEY, User_ID NUMBER(10) NOT NULL, Account_Name VARCHAR(255) NOT NULL, Balance NUMBER(10) DEFAULT 0 NOT NULL, FOREIGN KEY (User_ID) REFERENCES Users(User_ID) ); -- Table: Transactions CREATE TABLE Transactions ( Transaction_ID NUMBER(10) PRIMARY KEY, Account_Number VARCHAR(13) NOT NULL, Amount NUMBER(10, 2) NOT NULL, Transaction_Type VARCHAR(10) NOT NULL, FOREIGN KEY (Account_Number) REFERENCES Accounts(Account_Number) );
内容的提问来源于stack exchange,提问作者Christian Jude Africa
相关产品推荐
相关产品推荐

