问题描述
我想在 Oracle 19c 中创建一个带有复合主键和自动增量的表,如下所示:
pk01 pk02 column1
==== ==== =======
1 1 abc
1 2 def
1 3 ghi
2 1 jkl
2 2 mno
3 1 pqr
1 4 stu
我是怎么做的?
解决方法
为什么不创建单列 pk00 作为 pk 并将其设置为自动增量以进行存储?即像往常一样插入 pk01 密钥(您需要拥有它)。表中没有pk02,而是在使用窗口函数表达式查询时创建它:rank() over (partition by pk01 order by pk00) as pk02。
Table00 pk00 号码 pk pk01号 第 1 列 varchar2(100) ... ...
应用程序的其余部分使用对表的查询,如下所示。
#######################
FirebaseStorage storage = FirebaseStorage.instance; //create storage instance
// pass user id and image file
Future<String> uploadImage(String id,File file) async {
var reference =
storage.ref().child("profileImages/$id"); //it will create folder for profileImages
UploadTask uploadTask = reference.putFile(file);
TaskSnapshot taskSnapshot = await uploadTask.whenComplete(() => null); //this will upload image
String url = await taskSnapshot.ref.getDownloadURL(); // from there you will get image url.
return url;
}
#######################
,在此表上创建触发器以实现此结果。假设表名是 test123
create or replace trigger trg_test123 before insert on test123
for each row
declare
v_id1 number;
v_max_id2 number;
begin
v_id1 := :new.id1;
select nvl(max(id2),0) into v_max_id2 from test123 where id1 = v_id1;
v_max_id2 := v_max_id2 +1;
:new.id2 := v_max_id2;
end;