我需要登录触发器。我需要从 Excel Pivot 文件中捕获进入 SQL Server 的 SQL 查询。
目前我正在使用以下代码:
CREATE TRIGGER [MyLogonTrigger] ON ALL SERVER FOR LOGON
AS
BEGIN
IF PROGRAM_NAME() <> 'Microsoft%'
DECLARE @sqltext VARBINARY(128)
SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = @@spid
DECLARE @SQLQuery varchar(MAX)
set @SQLQuery = (select TEXT
FROM sys.dm_exec_sql_text(@sqltext))
INSERT INTO TestDatabase.dbo.LogonAudit
(
... audit columns ...
)
Select
SUSER_SNAME()
,GETDATE()
,@@SPID
,PROGRAM_NAME()
,ORIGINAL_DB_NAME()
,HOST_NAME()
,client_net_address
,@SQLQuery
FROM sys.dm_exec_connections
WHERE session_id = @@SPID
END;
Run Code Online (Sandbox Code Playgroud)
我面临的问题是@SQLQuery每次都是创建触发器定义代码,而不是刷新数据透视表时从 Excel 文件传递给 SQL 的实际查询。
我认为这与登录和实际选择查询执行发生在两个不同的事务(SPID)上有关。 …
迟早,数据库开发人员会遇到并可能使用许多对象的命名方案,如外键、默认约束等。
让我们考虑这个例子:将所有外键命名为:
FK__[name of source table]__[name of source col]__ref__[name of master table]__[name of master column]
例如,当使用create table提及 fk 但未明确提供约束名称的语句时,可以使用什么样的参数化/外部程序来实现具有这样的默认名称?
我在 StackOverflow 上发布了这个,有人建议这个查询更适合这里。
我试图鼓励在某些 PostgreSQL 8.3 数据库中使用和监控 autovacuum。
我经常遇到的一个反对意见是人们不“信任” autovacuum 或者 8.3 中的 autovacuum 中存在错误,这意味着它优先于调度清理而被忽略。大多数情况下,我们的表都很小,这种方法似乎有效。但是,对于我们更大的(以及大量更新的表),这确实不起作用(死元组计数增加,超过 max_fsm_pages,并且表没有被清理等)。
我只是想知道是否有人对 8.3 中的 autovacuum 有问题或不工作有参考。我自己的经验表明 autovac 工作正常,并且在必要时向 pg_autovacuum 表添加条目可以解决问题。
我想了解 autovacuum 的问题(如果存在)。
谁能告诉我怎么做?
(我知道这可能是一个愚蠢的问题,但我正在尝试学习如何使用 postgresql 的命令行)
~$ psql mybase
psql (9.1.3)
Type "help" for help.
Run Code Online (Sandbox Code Playgroud)
进而
mybase=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------------------+-------+----------
public | xxxxxx | table | postgres
public | xxxxxxx | table | postgres
public | xxxxxxxxxxx | table | postgres
public | xxxxxxxx | table | postgres
public | xxxxxxxxx | table | postgres
public | xxxxxxxxx | table | postgres
public | xxxxxxxxxxxxxxxx | table | postgres
public | xxxxxxxxxxxx | …Run Code Online (Sandbox Code Playgroud) 我脑子里有一个问题。最好创建一个表并在那里存储很多行,或者创建各种表并在其中存储几行?在物理级别上节省的性能和 I/O 是多少?多少空间将使用多张表而不是一张表?我正在考虑 Wordpress 如何处理多博客功能,因为我正在开始一个新项目并且正在寻找最佳方法。
我将要开发一个主要存储用户加密数据的应用程序。每条数据都通过 AES 密钥加密,AES 密钥本身使用每个授权用户的公共 RSA 密钥加密。
鉴于非加密数据的数量可以忽略不计(可能只有用户登录、一些日期和外键),我想知道“标准 DBMS”如 PostgreSQL 或 MySQL 是否是一个不错的选择。
事实上,这些 DBMS 经过优化,可以处理不同类型的数据(文本、整数、日期等)、索引、流程演算、聚合等。
就我而言,我将存储的绝大多数数据都是大块的文本(或者可能是二进制数据)。大部分所需的演算将在客户端解密后进行处理。
因此,我将无法解析我的数据。所以即使我有一个庞大的数据库,它也不会被称为“大数据”。但是,我想知道 MongoDb、MemSQL 或其他任何东西是否不是更准确的选择。如果没有,最好的 DBMS 是什么以及将它用于我的目的的最佳方式是什么?
换句话说,我认为每个 DBMS 都必须做出牺牲,以便在最重要的功能上更高效。我也认为上面详述的案例不是那么随意。所以我假设有很多我不需要的功能(或者我不能使用,例如 FULLTEXT 搜索)。另一方面,我可能需要被“标准 DBMS”丢弃的特性。
我想在 postgresql 中为一个表创建一个触发器。我的表包含有关事件的数据,包括房间号、开始时间和事件持续时间。在新插入表时,我想检查新事件的房间号在新事件发生时是否会很忙。如果是这样,那么我想引发异常,否则将新事件插入表中。我想将触发器声明为instead of触发器,insert但 postgres 不允许在表instead of上insert操作触发器(我不想只为触发器创建视图)。
我该如何解决这个问题?理论上我可以创建一个after触发器,然后检查新插入的数据是否有效,如果无效则删除。但这在概念上似乎是错误的方法,实际上也可能是错误的(我不确定触发器是否是原子的,也许有人可能已经根据错误的数据做出了错误的决定)。
这是表定义:
create table room_schedule(
start_date date,
start_time time,
room_no int,
event_id int,
duration interval,
primary key(start_date, start_time, room_no, event_id)
);
Run Code Online (Sandbox Code Playgroud)
这是我的触发器和函数定义:
create or replace function inserttrigfunc() returns trigger as $$
declare count int;
begin
with end_time_table(eid, stime, etime) as (
select event_id, start_time, (start_time + duration) as etime from room_schedule
where room_no=new.room_no
),
overlapping_time_table(eid, stime, etime) as(
select * from end_time_table
where …Run Code Online (Sandbox Code Playgroud) 有没有办法检查是什么导致存储过程重新编译(索引重建、统计更新和参数嗅探除外 - 无需运行分析器跟踪或扩展事件),我们是否可以停止/取消/终止自动重新编译过程以减少 CPU 负载?
postgresql ×3
sql-server ×3
mysql ×2
dbms ×1
encryption ×1
functions ×1
insert ×1
performance ×1
replication ×1
t-sql ×1
trigger ×1