我在 PostgreSQL、Employee 和 Leave 中有两个表,如下所示:
CREATE TEMP TABLE employee_table AS SELECT
id::int,
name::text
FROM ( VALUES
(1, 'John' ),
(2, 'David')
) AS t(id, name);
CREATE TEMP TABLE leave_table AS SELECT
id::int,
leave_date::date,
emp_id::int
FROM ( VALUES
(1, '01/10/1993' ,1),
(2, Null ,1),
(3, Null ,1),
(4, '02/12/1990' ,2),
(5, Null ,2),
(6, Null ,2)
) AS t(ID,Leave_Date,Emp_ID);
Run Code Online (Sandbox Code Playgroud)
我想更新 Leave 表并将 Leave_Date 列设置为每个员工的随机日期,可能是 01/01/2000,但如果员工在 Leave 表中有多个空条目,我想用两个不同的日期更新他的空条目这意味着一名员工在休假表中不应有两个相同的 Leave_Date 值,更新后我的休假表应如下所示:
ID Leave_Date Emp_ID
1 01/10/1993 1
2 01/01/2000 1
3 01/01/2001 1 …Run Code Online (Sandbox Code Playgroud) 我有两个本地数据库,其中一个我创建了一个引用第二个数据库中的表的外部表。当我想在外部表中插入时,它会从 1 开始插入主键,尽管当我在实际表中插入时,它会从输入的最后一个值继续。有什么办法,所以如果我插入实际或外表,它会按主键的顺序排列吗?
CREATE TABLE Actual_Table (
id serial PRIMARY KEY
name varchar
);
Run Code Online (Sandbox Code Playgroud)
然后我在实际表中插入一些数据
INSERT INTO Actual_Table (name) VALUES
('AHMAD'),
('MAHMOOD');
Run Code Online (Sandbox Code Playgroud)
然后我在第二个数据库中创建以下外部表
CREATE FOREIGN TABLE Foreign_Table (
id serial,
name varchar
) server some_server options(schema_name 'public', table_name 'Actual_Table')
Run Code Online (Sandbox Code Playgroud)
然后当我使用以下插入语句用户插入外表时,我收到一个违反主键约束的错误
INSERT INTO Foreign_Table (name) VALUES ('John');
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
ERROR: duplicate key value violates unique constraint "to_copy_pkey"
DETAIL: Key (id)=(2) already exists.
CONTEXT: Remote SQL command: INSERT INTO public.to_copy(id, name) VALUES ($1, $2)
Run Code Online (Sandbox Code Playgroud) 有没有办法使用可以从记录中获取唯一更新字段的触发器?我只是在测试审计跟踪日志,因此它可以在更新时将字段名称与其其他信息一起保存。我不想使用 IF 语句,因为我的表中可能有 200 多个字段。
我有一个包含以下数据的表:
ID Name LastName
1 William Johns
2 John Adam
4 William Smith
3 Mark Stephan
Run Code Online (Sandbox Code Playgroud)
我想找到所有那些名字相同但姓氏不同的记录。所以结果将是这样的:
ID Name LasName
1 William Johns
2 William Smith
Run Code Online (Sandbox Code Playgroud)
什么是MS。访问查询或方法来查找所有这些记录?
我想根据卡号的特定列匹配两个表,第二个表中某些卡号的字符之间有空格,如下所示:
'NES 123_4_5'
'MTS 678_9_0'
Run Code Online (Sandbox Code Playgroud)
我想要的是删除字符和数字之间的空格并将其更改为以下形式:
'NES123_4_5'
'MTS678_9_0'
Run Code Online (Sandbox Code Playgroud)
执行此操作的函数的 SQL 查询是什么?