AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi View verhält sich merkwürdig bis idiotisch :-|
Thema durchsuchen
Ansicht
Themen-Optionen

View verhält sich merkwürdig bis idiotisch :-|

Ein Thema von Bart Simpson · begonnen am 31. Mär 2004 · letzter Beitrag vom 1. Apr 2004
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Re: View verhält sich merkwürdig bis idiotisch :-|

  Alt 31. Mär 2004, 12:59
Strukturänderungen (Löschen, Einfügen, Ändern von Felder) an Tabelle1 bringen die
View durcheinander.
Dann muss man die Views refreshen.

Dazu folgende stored procedure:
SQL-Code:
CREATE PROCEDURE spRefreshAllViews
(
     @TableName nvarchar(128) = NULL,
     @OwnerName nvarchar(128) = NULL
)
AS
/*
    Aktualisiert alle von einer Tabelle abhängigen Sichten
    der aktuellen Datenbank via sp_refreshview
*/

     DECLARE
         @cViewName nvarchar(128),
         @cOwnerName nvarchar(128),
         @fullname nvarchar(256),
         @msg nvarchar(255)

     SET NOCOUNT ON

     IF @TableName IS NULL
         SELECT @TableName = '%'
     IF @OwnerName IS NULL
         SELECT @OwnerName = USER_NAME()

     DECLARE curViews CURSOR FOR
         SELECT DISTINCT VIEW_SCHEMA, VIEW_NAME
         FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
         WHERE TABLE_SCHEMA LIKE @OwnerName AND TABLE_NAME LIKE @TableName

     OPEN curViews
     FETCH NEXT FROM curViews INTO @cOwnerName, @cViewName
     WHILE (@@fetch_status <> -1)
     BEGIN
         IF (@@fetch_status <> -2)
         BEGIN
             SELECT @fullname = quotename(@cOwnerName) + '.' +
quotename(@cViewName)
             PRINT @fullname

             EXEC ('sp_refreshview ' + '''' + @fullname + '''')
         END
         FETCH NEXT FROM curViews INTO @cOwnerName, @cViewName
     END
     CLOSE curViews
     DEALLOCATE curViews
     RETURN 0
GO
Du könntest deine View auch mit dem Attribut SCHEMABINDING versehen,
um Strukturänderungen zu blockieren:

SQL-Code:
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
WITH SCHEMABINDING
AS ...
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz