SQL

Mit diesen SQL Scripten kann ein Datenbankserver eingerichtet werden. Sie sind für die MSDE bzw. den Microsoft SQL-Server erstellt, können aber bei Bedarf angepasst werden.

Die Code Ansichten sind mit http://manoli.net/csharpformat/ für bessere Lesbarkeit formatiert worden. Für ein zusammenhängendes SQL-Script als batch-Datei bitte Email an sql@nulllogicone.net

Database

CreateDatabase  erstellt eine neue, lokale Datenbankinstanz. Die Pfade und Login Daten müssen angepasst werden.

Tables

CreateTables erstellt die benötigten Tabellen und Felder

Views

CreateViews erstellt Abfragen über mehrere Tabellen

Functions

Anzahl der Detailtabelleneinträge als Funktionswert für Abfragen. Jeder Stamm weiss wieviele Nachrichten er hat, jede Nachricht kennt ihre Empfänger.

Beispiel: Anzahl_PostIt_Stamm()
CREATE FUNCTION [oli].Anzahl_PostIt_Stamm()
RETURNS TABLE
AS
RETURN ( SELECT StammGuid, COUNT(*) AS AnzP
FROM  [oli].Wurzeln
GROUP BY StammGuid )
GO

 

Stored Procedures

Die meisten Daten werden aus der Datenbank über ihren Primärschlüssel (eine GUID) oder einen Fremdschlüssel abgefragt (dann werden mehrere Zeilen zurückgeliefert). Für die Haupttabellen [SAPCT], [NKBZ] gibt es aus Performancegründen gespeicherte Prozeduren, die von der Data-Access-Layer Schicht verwendet werden.

Die Namen sind aus dem Präfix Get_, dem Tabellen- bzw. View Namen_ und dem Schlüsselparameter gebildet.

Beispiel: Get_PostIt_PostItGuid
CREATE PROCEDURE oli.Get_PostIt_PostItGuid(@PostItGuid uniqueidentifier)
AS SELECT oli.PostIt.*
FROM  oli.PostIt
WHERE (PostItGuid = @PostItGuid)
GO
Beispiel: Get_PostIt_StammGuid
CREATE PROCEDURE oli.Get_PostIt_StammGuid(@StammGuid uniqueidentifier)
AS SELECT oli.PostIt.*
FROM  oli.Wurzeln INNER JOIN
               oli.PostIt ON oli.Wurzeln.PostItGuid = oli.PostIt.PostItGuid
WHERE (oli.Wurzeln.StammGuid = @StammGuid)
GO

Constraints

Beschreiben die Beziehungen zwischen Tabellen und die Feldbedingungen der Business Logic auf Datenbank Ebene.

Trigger

Es gibt erst wenige Trigger, da sie sehr anwendungsspezifisch sind.

Beispiel: NichtAbwurzeln
-- =============================================
-- wurzeln kann nicht gelöscht werden, wenn
-- negativer Betrag bezahlt wurde
-- =============================================

use OLIs

IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'Del_Trigger' 
       AND       type = 'TR')
    DROP TRIGGER Del_Trigger
GO

CREATE TRIGGER oli.Del_Trigger
ON oli.Wurzeln
FOR DELETE 
AS 
If (SELECT bezahlt FROM DELETED)<0
BEGIN
    RAISERROR ('Man kann nicht abwurzeln wenn negativer Betrag gezahlt wurde', 16, 1)
    ROLLBACK TRANSACTION
END
GO


nulllogicone.net |  Impressum  | comments mailto:info@nulllogicone.net