有一个数据表,有 n 个字段,有主键字段,主键内容自动生成。并且还有 n-1 个字段,这些字段都带有自己的唯一约束,并且这些字段的内容不是自动生成的,是人工录入的,现在要求是实现对该数据表的增删改查的页面。
遇到这种情况,那增加与修改的代码流程(也就是最终调用 insert 和 update 语句的方法),怎么写是最好的?如何把处理该情况的代码流程写的通用一点(封装成一个专门处理此情况的 api 方法)?
还是每个字段的修改,在 ui 界面上,都用单独的对话框进行修改?
1
lanlanye 2021-07-14 10:06:25 +08:00
UI 怎么做和你的接口有什么关系?有重复就报错不就完事了
|
3
timethinker 2021-07-14 10:24:33 +08:00
是每一条数据的组合都唯一吗?还是某一个字段的值是唯一的?
一般如果违法数据库约束会有报错信息,你 catch 住相关的异常然后响应给客户端对应的结果就行了吧。 |
4
tctc4869 OP @qwe520liao 不是组合唯一,是除去主键的每个字段有独立的唯一约束
数据库约束会有报错信息,不过还有一种就是查询检测,用 trycatch 检测和通过查询检测,哪个更好一些? |
5
timethinker 2021-07-14 10:48:42 +08:00
建议查询,一般如果在事务内数据库报错了,会导致事务回滚,显然 try-catch 不适合,你查询的话可以给到客户单更详细的信息。
|
6
saulshao 2021-07-14 10:49:42 +08:00
|
7
tctc4869 OP @saulshao trycatch 检测的话,不同的数据库唯一约束报错信息可能不一样,不一定唯一约束报错信息会有指向报错的字段是哪个
|
9
lanlanye 2021-07-14 11:09:44 +08:00
@tctc4869 我不懂你这个需求是基于什么考虑的,难道你对表的增删改查不是以行为单位而是以字段为单位吗?如果这样的话为什么要用关系型数据库?
|
10
lanlanye 2021-07-14 11:16:34 +08:00
@tctc4869 如果需求是找到重复的字段具体是哪个,Django 的 ORM 就有类似功能可以参考,静态语言我就不清楚了。
|
11
tctc4869 OP @qwe520liao 我目前想到的是有多少字段就差多少次。
那么增加修改用查询方式,假设数据表字段有 8 个,除去主键,每有一个唯一约束字段的内容就查询数据库验证,那就得搞 7 次验证,验证增加或修改的数据记录是否在数据表存在,这个验证流程能不能缩短一些。 |
12
saulshao 2021-07-14 13:43:28 +08:00
@tctc4869 7#这就是我说的,有特别需求.....
你的程序中如果只有数据库的 DDL 里才知道到底哪些字段是唯一索引,那么你就需要把这种定义放在代码里。 这种操作会给你的开发带来更多工作量,同时还会给你的整个开发小组的管理带来更多额外的流程。 |
13
akira 2021-07-14 21:05:44 +08:00
根据你的需求, 增加删除 产生的实际 sql 代码其实是类似的,做个通用方法去处理就是了
|