Verwendung: SQL Server, SSMS 2008 T-SQLLegen Sie einen Eintrag in eine Tabelle aus einer VIEW
Ziel: ich eine Ansicht erstellen möchten, wo, wann immer es (zum Beispiel select * from VIEW
) genannt wird, Es wird einen Datensatz in eine andere Tabelle einfügen, die im Grunde die aktuelle Datetime angibt. Der Zweck ist, zu verfolgen, wie oft die Sicht aufgerufen wird.
Was ich versucht habe: Ich habe versucht, etwas wie die unten VIEW-Pseudo-Code ausgeführt, aber es ist fehlgeschlagen.
Frage: Ist dieses Ziel möglich?
USE DATABASE
GO
/****** Object: View SCHEMA.VIEW1 Script Date: 08/10/2016 17:52:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW SCHEMA.VIEW1 AS
--Step 1: Update the LogTable with the current datetime so I will know that the VIEW was called on this date/time
INSERT INTO DATABASE.SCHEMA.LogTable (DATE)
VALUES (GETDATE())
--Step 2: The "actual" VIEW code, select all records from TABLE1 (just as an example)
SELECT *
FROM DATABASE.SCHEMA.TABLE1
GO
Haben Sie es, indem Sie die Ansicht nennen müssen? Könnten Sie beispielsweise keine Prozedur erstellen, die aus der Ansicht auswählt und in die Protokolltabelle einfügt und stattdessen aufruft? – ZLK
@ZLK Ich möchte die 'einfügen in' in den VIEW-Code im Gegensatz zu einer Prozedur, um nicht ausführen alle Berechtigungen für alle Mitarbeiter in der Datenbank zu geben. Stattdessen erhielten sie Schreibberechtigungen speziell für die LogTable. – Chase
Naja, soweit ich weiß, ist es in einer Ansicht nicht wirklich möglich. Aber ich bin mir nicht sicher, was das Problem wäre, wenn man Benutzern die Erlaubnis für das Verfahren gibt, wenn es dasselbe tut. – ZLK