Sql 如何在oracle中使用cascade

Sql 如何在oracle中使用cascade,sql,oracle,ora-00907,Sql,Oracle,Ora 00907,该错误是在oracle中使用时出现的 create table loginDetails( userId varchar(30), cellPhoneNo varchar(10), displayName varchar(20), password varchar(20), secretQuestion varchar(50), secretAnswer varchar(50), joiningDate date, foreign key(userI

该错误是在oracle中使用时出现的

create table loginDetails(
 userId   varchar(30),
 cellPhoneNo    varchar(10),    
 displayName  varchar(20),
 password   varchar(20),
 secretQuestion varchar(50),
 secretAnswer varchar(50),
 joiningDate    date,
 foreign key(userId) references userDetails(userId) on delete cascade on update cascade
);
级联 *

第9行错误: ORA-00907:缺少右括号


此查询在mysql上运行,但在oracle中不运行?请告诉我它在oracle中是如何工作的。

oracle不支持主键的级联更新。主键应该是唯一的和不可变的,所以它不需要改变。因为您不应该更新主键,所以不需要级联这些更新

create table loginDetails(
 userId   varchar(30),
 cellPhoneNo    varchar(10),    
 displayName  varchar(20),
 password   varchar(20),
 secretQuestion varchar(50),
 secretAnswer varchar(50),
 joiningDate    date,
 foreign key(userId) references userDetails(userId) on delete cascade on update cascade
);

通常,您可能还应该使用
VARCHAR2
数据类型,而不是
VARCHAR
。目前,这些数据类型是相同的,但Oracle可能会在将来更改
VARCHAR
类型的语义,以使空字符串的处理方式与
NULL
不同。假设您不希望您的应用程序在将来这些语义发生变化时可能会崩溃,那么使用
VARCHAR2

会更安全。对于初学者来说,不同供应商(MySQL、Oracle、SQL Server等)的语法并不相同。“SQL”中的“S”代表“结构化”,遗憾的是,它没有“标准化”。尽管ANSI正在努力改进这一点,但支持和性能并不总是理想的。