I trigger sono strumenti molto potenti e pericolosi, in questa situazione possiamo capire quale azione viene compiuta su una tabella di nome ‘test’:

USE pubs –> Usa il database pubs

GO

/* se esiste all’interno del database l’oggetto ‘test’ ed è una TABELLA */

IF OBJECTPROPERTY ( object_id(‘test’),’ISTABLE’) = 1

DROP TABLE test /* allora lo elimino */

/* se esiste all’interno del database l’oggetto ‘tr_test’ ed è un TRIGGER */

IF OBJECTPROPERTY ( object_id(‘tr_test’),’ISTRIGGER’) = 1

DROP TRIGGER tr_test /* allora lo elimino */

GO

/* creo una TABELLA dal nome ‘test’ */

CREATE TABLE test(i int)

GO

/* creo un TRIGGER dal nome ‘tr_test’ */

CREATE TRIGGER tr_test ON test FOR INSERT, UPDATE, DELETE AS

IF EXISTS(SELECT * FROM inserted) AND EXISTS(SELECT * FROM deleted)

PRINT ‘UPDATE… hai aggiornato uno o più record’

ELSE

IF EXISTS(SELECT * FROM inserted) AND NOT EXISTS(SELECT * FROM deleted)

PRINT ‘INSERT… hai inserito uno o più record’

ELSE

PRINT ‘DELETE… hai eliminato uno o più record’

GO

/* Istruzioni DML per INSERT , UPDATE e DELETE */

INSERT test values(1)

UPDATE test set i = i + 1

DELETE test

Dopo aver creato il RecordSet, è possibile eliminare record per mezzo dell’istruzione:

<% rs.Delete %>

Se utilizzare un database Access, attenzione alle relazioni impostate

I DEFAULT sono un tipo di constraint molto utile, servono ad inserire un valore di default ad una colonna di una tabella.

USE pubs –> Usa il database pubs

GO

/* se esiste all’interno del database l’oggetto ‘test’ ed è una TABELLA */

IF OBJECTPROPERTY ( object_id(‘test’),’ISTABLE’) = 1

DROP TABLE test /* allora lo elimino */

GO

CREATE TABLE test (id# int IDENTITY NOT NULL, tipo1 varchar(255))

GO

ALTER TABLE test –> altero la tabella test

ADD CONSTRAINT df_test_tipo1 –> aggiungo un CONSTRAINT di nome df_test_tipo1

DEFAULT ‘mio default’ FOR tipo1 –> il CONSTRAINT è di tipo DEFAULT è lo lego alla colonna tipo1 della tabella test

INSERT INTO test (tipo1) VALUES (default)

SELECT * FROM test

La login in SQL Server è formata da user ID e password validi e ci sono necessari ogni qualvolta ci colleghiamo a SQL Server.

Solo un utente con i privilegi di sa può eseguire questa operazione:

/* Aggiungo una nuova login */

exec sp_addlogin gino,furia,pubs

/* Elimino la login appena creata */

exec sp_droplogin gino

E’ possibile comprimere un database Access direttamente dal programma stesso (Strumenti -> Utilità database -> Compatta database), oppure per mezzo di questo script ASP:

<%

Set db = CreateObject(“DAO.DBEngine.35”)

db.CompactDatabase “percorsoDatabase\database.mdb”,

percorsoDatabase\database_compresso.mdb”

%>

dove, ovviamente, percorsoDatabase è il percorso del file .mdb. Come potete vedere, è necessario inserire un nuovo nome per il db Access

Tramite il seguente script:

<%

‘Aggiungo il record

rs.AddNew

‘Inserisco i valori nei campi

rs(“nomeCampo”) = valore

‘Aggiorno i valori nel RecordSet

rs.Update

%>

è possibile aggiungere un nuovo record al database, inserire i nuovi valori per i campi ed aggiornare il tutto

I Fixed Server Roles sono simili al concetto di gruppi in NT. Sono dei permessi a compiere certe operazioni su SQL Server, sono fissi e non possono essere cambiati (ma ne possiamo aggiungere di personalizzati). Solo una login con i permessi di sa può assegnare un Fixed Server Roles.

Ecco l’elenco dei rolename: sysadmin, securityadmin, serveradmin, setupadmin, processadmin, diskadmin dbcreator.

— Aggiungo la login ‘mario’ al ruolo di ‘sysadmin’

EXEC sp_addsrvrolemember @loginame = ‘mario’, @rolename = ‘sysadmin’

— Tolgo la login ‘mario’ dal ruolo di ‘sysadmin’

EXEC sp_dropsrvrolemember @loginame = ‘mario’, @rolename = ‘sysadmin’

Connettersi ad un Database quando non si hanno i diritti amministrativi

per operare su ODBC e’ piu’ semplice di quanto si pensi.

Utilizzando la procedura DSN-less, e’ possibile collegarsi a database residenti nella nostra virtual root.

objConn.ConnectionString = “DBQ=C:\Webcondivisa\Nomedatabase.mdb;DRIVER={MS Access (*.mdb)}”

Un constraint serve per controllare i valori che vengono inseriti all’interno di una colonna di una tabella.

USE Northwind –> Usa il database Northwind

ALTER TABLE Customers –> Altera la tabella clienti

ADD CONSTRAINT ckCustomersLen –> aggiungi un constraint dal nome ‘ckCustomersLen’

CHECK (LEN(CustomerID) <= 5) –> assicurati che la colonna ‘Customer ID’

–> contenga valori minori o uguali a 5

/*

Per eliminare un constraint già esistente in una tabella

USE Northwind –> Usa il database Northwind

ALTER TABLE Customers –> Altera la tabella clienti

DROP CONSTRAINT ckCustomersLen

*/