Announcement

Collapse
No announcement yet.

Tabellennamen müssen groß geschrieben werden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabellennamen müssen groß geschrieben werden

    Hallo zusammen,
    kann mir jemand einen Tip geben, wie man es realisieren kann, dass die Programmierer die Tabellennamen groß schreiben MÜSSEN?

  • #2
    Indem du ein Implementierungsvorgabe (Word/PDF-Dokument) machst das dies so gemacht werden soll. Normalerweise werden sich die Entwickler daran halten. Wenn nicht hast du ein größerer Problem im Team als Groß/Kleinschreibung.

    Comment


    • #3
      Danke für den Tip, hilft mir aber nicht wirklich weiter. Bei uns gibt es schon ein solches Dokument, aber... Oft ist es so, dass bei unendliche vielen Servern und Datenbanken ein solches "Delikt" auch nicht gleich hoch kommt. Wenn man es dann merkt, gibt's jedesmal Stress weil dann schon wieder Abhängigkeiten auf den Tabellen liegen. Durch Termindruck hat dann niemand Zeit es zu ändern usw. Deshalb möchte ich wenn es irgendwie geht, das ganze bei der Wurzel packen und die Erstellung von tabellen die klein geschrieben sind verhindern.

      Comment


      • #4
        DDL-Trigger
        ab 2008 wohl auch mit Policy-based-Management

        Comment


        • #5
          Beispiel mit DDL-Trigger[HIGHLIGHT="SQL"]SET NOCOUNT ON

          IF EXISTS(
          SELECT *
          FROM sys.triggers
          WHERE name = N'CreateTable'
          AND parent_class_desc = N'DATABASE'
          )
          DROP TRIGGER CreateTable ON DATABASE
          GO

          CREATE TRIGGER CreateTable ON DATABASE
          FOR CREATE_TABLE AS
          BEGIN;
          IF EVENTDATA().value ('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(128)') = N'TABLE'
          BEGIN;
          DECLARE @Text SYSNAME ; SET @Text = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(128)')
          DECLARE @Count INT ; SET @Count = 1;
          WITH cte (Id, Value, Rest)
          AS (SELECT 1 as Id
          ,SUBSTRING(@Text, 1, @Count) AS Value
          ,SUBSTRING(@Text, @Count + 1, LEN(@Text)) AS Rest
          UNION ALL
          SELECT Id + 1 AS Id
          ,SUBSTRING(Rest, 1, @Count) AS Value
          ,SUBSTRING(Rest, @Count + 1, LEN(Rest)) AS Value
          FROM cte
          WHERE @Count <= Len (Rest)
          )
          SELECT Value
          INTO #TEST
          FROM cte
          WHERE ASCII (LEFT (Value, 1)) BETWEEN 97 AND 123
          OR ASCII (LEFT (Value, 1)) IN (95, 91, 93, 35);

          SET @Count = ( SELECT COUNT (*) FROM #TEST );

          IF @Count != 0
          BEGIN;
          RAISERROR ('Tabellenname "%s" hat "%d" Kleinbuchstaben, so wird dat nix!!!', 16, 1, @Text, @Count);
          ROLLBACK;
          END;
          END;
          END
          GO

          BEGIN TRANSACTION;
          CREATE TABLE Test (ID INT);
          GO

          BEGIN TRANSACTION;
          CREATE TABLE TEST (ID INT);

          SELECT * FROM Sys.Objects WHERE name = 'test';

          COMMIT;

          IF EXISTS(
          SELECT *
          FROM sys.triggers
          WHERE name = N'CreateTable'
          AND parent_class_desc = N'DATABASE'
          )
          DROP TRIGGER CreateTable ON DATABASE
          GO

          DROP Table TEST[/HIGHLIGHT]

          Wobei die CTE von Olaf entlehnt ist

          Comment


          • #6
            Oder Du verwendest eine CASE SENSITIVE Collation für die Datenbank und legst die Objekte immer mit CASE UPPER an; dann läuft es immer auf Fehler, wenn nicht die richtige Groß/Kleinschreibung verwendet.

            Dazu raten möchte ich aber nicht, damit handelst Du Dir mitunter andere unerwünschte Probleme ein.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment

            Working...
            X