如何在sql中插入工资 "NULL"?

如何实现一个sql命令,如果是志愿工,则工资输出NULL呢?这是我先创建的表。

create Table worker (
pid integer references Person,
salary float);

create Table person(
pid integer primary key,
name varchar(30),
adress varchar(30));

因为我不知道如何区分普通工人和自愿工人 我决定再做一张表。遗憾的是,我不知道如何为所有志愿工的工资插入NULL值。这是我试过的。

create table voluntaryworker(
pid integer references Person,
salary = null);

insert into Person (pid, name, adress) values (1345, anna, 'festreet');
insert into voluntaryworker (pid, salary) values (1345, null);

pid = 人名ID

解决方案:

像其他人评论的那样,你当然不需要另一个表来实现这个功能。你需要的只是一些方法来记住一个工人是否是自愿的。

为了确保 salary 坚持你的规则,你可以添加一个 CHECK 约束:

CREATE TABLE worker (
  pid       integer PRIMARY KEY REFERENCES person
, voluntary boolean NOT NULL DEFAULT false
, salary    numeric
, CONSTRAINT voluntary_has_no_salary CHECK (NOT voluntary OR salary IS NULL)
);

意思是:志愿工作者的工资不能为非空。

或者,你可以删除该表 worker也是,只需添加列 worker_salaryworker_voluntary 给同桌人。(您可能需要一个额外的标志 worker或将此信息整合到其他两栏中…)

如果您仍然对 生成列 (这里不需要),请看这个例子的正确语法和说明。

相关的。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何在线的上方和平行线的任意角度绘制文字?

2022-5-11 12:00:12

解决方案

如何根据内存位置对集合中的对象进行排序?

2022-5-11 12:00:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索