一尘不染

如何使用空字符串获取具有空值的主键?

sql

我有一个表,我需要两个值都为主,因为我在其他表中将此组合称为外键。表定义和我需要输入的数据如下

create table T1
(
  sno number(10),
  desc varchar2(10),
  constraint T1_PK primary key(sno,desc)
)
DATA to put
sno    | desc
---------------------------
100    | "hundred"
000    | null
120    | "one twenty"
123    | ""   <EMPTY STRING>
000    | ""   <EMPTY STRING>

这里的问题是desc有时可以为null。主键不能为null,因此当我遇到null值时,我只是在表中插入“”。这里的问题是有时desc可能有空字符串。如果我插入about数据100,Null和100,则“”是两个不同的东西,但是我无法将它们放在表中。我不希望将诸如’EMPTY’之类的字符串设置为null,因为它可能会使正在查看表的最终用户感到困惑。

1)如何在将desc作为主键的同时处理null大小写。我不能使用自动序列号。2)如何区分我引入的空字符串和已经存在的空字符串?


阅读 143

收藏
2021-05-30

共1个答案

一尘不染

为什么不引入真正的主键属性(如id),该属性会自动递增并在sno和desc上创建索引?

2021-05-30