0

我有一张tbl_settings总是只有一条记录的表。和其中的一个领域show_messages_in_log。另一个table tbl_logs存储所有日志。当然,tbl_logs有一个消息字段。

我需要一个视图来显示日志:

  • 如果tbl_settings.show_messages_in_log是真的,显示tbl_logs.message
  • 如果tbl_settings.show_messages_in_log是假的,就不显示了tbl_logs.message

任何机构可以帮助我吗?

4

3 回答 3

1

你不能。在关系数据库中,关系(表、视图)总是必须有固定数量的列。

您唯一能做的就是始终拥有该列,但在视图中将其显示为 NULL。为此,您需要连接两个表并在视图中使用 case 表达式:

case 
   when show_messages_in_log = 'true' then tbl_logs.message
   else null
end as message
于 2012-11-12T09:40:37.550 回答
1

也许只是加入表格,像这样

create table tbl_settings 
(show_messages_in_log boolean);

create table tbl_logs
(message varchar(200));

insert into tbl_logs
values ('msg1'), ('msg2');

insert into tbl_settings 
values (true);

select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE

这将返回所有行。

update tbl_settings set show_messages_in_log = false;

select tbl_logs.message
from tbl_logs inner join tbl_settings on tbl_settings.show_messages_in_log = TRUE

这将根本不返回任何行。

于 2012-11-12T09:52:11.640 回答
0
IF tbl_settings.show_messages_in_log = TRUE THEN tbl_logs.message
ELSE NULL
END IF
于 2012-11-12T09:42:31.743 回答