如何将以下oracle sql转换为create表到mysql
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY' NLS_DATE_LANGUAGE='english'; select sysdate from dual;
CREATE TABLE dept (
value1 DATE not null,
value2 NUMBER(21,6) not null,
value3 NUMBER(21,6),
value4 references tem(temno));插入数据示例:
insert into emp(value1,value2,value3,value4) values('02-APR-1989',26850,20,30);发布于 2017-11-12 12:12:41
首先,将Oracle的NUMBER数据类型替换为MySql的DECIMAL数据类型。
您的表定义引用了另一个名为tem的表:
value4 references tem(temno)这就是所谓的内联外键约束。
如果以前没有创建过表dept,则无法创建表tem,因此Oracle中的整个脚本必须如下所示:
CREATE TABLE tem(
temno number primary key
);
INSERT INTO tem VALUES ( 1 );
CREATE TABLE dept (
value1 DATE not null,
value2 number(21,6) not null,
value3 number(21,6),
value4 references tem(temno)
);
INSERT INTO dept VALUES( date '2017-01-22', 22.0, 13.5, 1 );在创建表tem之前,还必须在MySql中创建表dept。
MySql不支持内联外键约束,只支持行外键约束,因此MySql中的表定义必须如下所示:
CREATE TABLE tem(
temno decimal primary key
);
INSERT INTO tem VALUES ( 1 );
CREATE TABLE dept (
value1 DATE not null,
value2 decimal(21,6) not null,
value3 decimal(21,6),
value4 decimal,
constraint foreign key (value4) references tem(temno)
);
INSERT INTO dept VALUES( date '2017-01-22', 22.0, 13.5, 1 );现场演示:http://sqlfiddle.com/#!9/173b2/1
注意:value4 decimal的数据类型必须与表tem中的temno decimal的数据类型相同,而tem(temno)列必须是主键,否则会出现错误。
https://stackoverflow.com/questions/47248359
复制相似问题