20得票3回答
如何在PostgreSQL(或SQL通用)中实现业务逻辑权限? 在PostgreSQL(或SQL通用)中,实现业务逻辑权限可以通过以下步骤进行: 1. 定义角色和权限:首先,您需要定义不同的角色,并为每个角色分配相应的权限。这些角色可以代表不同的用户组或职能。 2. 创建视图:根据业务逻辑需求,创建相应的视图来限制对数据的访问。视图可以过滤、隐藏或转换数据,以确保只有具有相应权限的角色可以查看或修改特定数据。 3. 使用触发器:使用触发器可以在数据库操作发生时执行自定义的业务逻辑。您可以编写触发器函数来检查用户角色和权限,并根据需要拒绝或允许操作。 4. 实施行级安全性:通过使用行级安全性功能,您可以进一步细化对数据的访问控制。行级安全性允许您定义基于特定条件的数据访问规则,以确保只有符合条件的角色可以访问特定行。 5. 使用存储过程:存储过程是一种在数据库中执行一系列操作的方法。您可以编写存储过程来实现复杂的业务逻辑,并在其中包含对角色和权限的验证。 6. 定期审查和更新权限:业务逻辑权限的实施是一个持续的过程。定期审查和更新角色和权限,以确保它们与业务需求保持一致。 通过以上步骤,您可以在PostgreSQL(或SQL通用)中有效地实现业务逻辑权限,并确保只有具有相应权限的角色可以执行特定操作。

假设我有一个物品的表格: CREATE TABLE items ( item serial PRIMARY KEY, ... ); 现在,我想介绍每个项目的“权限”概念(请注意,我不是在谈论数据库访问权限,而是该项目的业务逻辑权限)。每个项目都有默认权限,还有可能覆盖默认...

11得票2回答
MySQL 8.0中的枚举类型是否仍然不推荐使用?

所以我和一个同事在使用枚举 vs 查找表的问题上有分歧。 这篇2011年的非常古老的文章和MyQL5.5仍然被那些不喜欢枚举的人一再引用。 但是我们正在使用MySQL8.0,在数据库中并不是很大,大约有50到60个表,其中有30多个枚举列。 有几个表有几百万行数据,大多数都远低于50万行。...

10得票3回答
如何在不使用CLR的情况下创建数据库级别的常量(枚举)?

我有几个SQL对象,需要根据请求的期望状态采取不同的操作。是否有一种方法可以创建数据库级别的常量(枚举),可以传递给存储过程、表值函数,并在查询中使用(而不使用CLR)? CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumV...

10得票2回答
ORDER BY 出现错误:函数 array_position(text[], character varying) 不存在。

我在Postgres数据库中有一个相当基本的分类列,目前存储为VARCHAR。我可以使用以下命令选择每个计数: 我认为添加ORDER BY array_position()会起作用: SELECT color, count(*) FROM research GROUP BY color ...

7得票1回答
在PostgreSQL中如何像在MySQL中一样查询枚举类型?

在MySQL中有以下表格: CREATE TABLE bob(foo ENUM('a','b','c')); INSERT INTO bob (foo) VALUES ('a'),('b'),('c'),('a'),('a'); SELECT * FROM bob WHERE foo &...

6得票2回答
确定用户定义的类型是否为ENUM

有没有办法确定在PostgreSQL中一个用户定义的类型是否是枚举类型? 基本上我们有以下内容: CREATE TYPE foo AS ENUM ( 'Sometimes', 'You', 'Wanna', 'Go', 'Where Everybody Knows Yo...

6得票2回答
在SQL中,你会用ENUM来做什么?

我正在尝试完成我的CIS课程的作业,我需要包含一个叫做ENUM的数据类型。我知道这代表枚举列表,但我不确定什么时候使用ENUM是合适的。我在使用的书中给出了一些例子,比如大陆的列表。我能用它来描述工作场所的部门列表吗?

5得票2回答
优雅地处理 T-SQL 代码中的“类似枚举”的魔法数字

我们使用Dynamics GP,熟悉GP的人都会对其内部应用中各种枚举值的"魔术数字"列有所了解。例如,一个报表查询可能类似于以下内容: ... WHERE sod.SOPTYPE = 2 AND iv.VCTNMTHD = 3 AND pod.POLNESTA IN (2,...

5得票3回答
一对多的字典(查找)表与varchar和enum相比如何?

想象一下,我们有一个订单表,而且每个订单都有一个状态。这三种选项中哪一种是最好的呢? 1. 在状态列中使用varchar。 2. 在状态列中使用enum。 3. 使用单独的状态表,该表包含status_id int和name varchar,并在订单表中将status_id作为外键。 哪种...

5得票1回答
BRIN索引支持ENUM类型吗?

BRIN索引似乎很有用,但我不确定如何在ENUM类型上使用它。 我以为这段代码会起作用: CREATE TYPE test_enum AS ENUM ('a', 'b'); CREATE TEMPORARY TABLE my_table ( x test_enum ); CREAT...