Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Alternatif untuk berfungsi untuk SQL dinamis

Salah satu opsi adalah membuat tampilan dari semua tabel project_xxx. Sesuatu seperti:

CREATE VIEW SecurityTable
AS
SELECT 'Project_1', User, HasAccess
FROM   Project_1
UNION
SELECT 'Project_2', User, HasAccess
FROM   Project_2
UNION
SELECT 'Project_3', User, HasAccess
FROM   Project_3
etc...

Kemudian Anda cukup menanyakan tampilan Anda seolah-olah database telah dirancang dengan benar sejak awal;-)

SELECT ProjectID, User
FROM   SecurityTable
WHERE [criteria]
AND   HasAccess=1

Saat Anda menyatakan bahwa Anda akan sering menambahkan tabel proyek baru, saya sarankan Anda memiliki tabel keamanan yang diisi dengan kueri dinamis setiap pagi. Sebagai contoh:
CREATE TABLE Project_1 (
    Usr varchar(20),
    HasAccess bit)
GO
CREATE TABLE Project_2 (
    Usr varchar(20),
    HasAccess bit)
GO
CREATE TABLE SecurityTable (
    Usr varchar(20),
    HasAccess bit)
GO


INSERT INTO Project_1 (Usr, HasAccess) VALUES ('Kermit', 1)
INSERT INTO Project_1 (Usr, HasAccess) VALUES ('MissPiggy', 1)
INSERT INTO Project_2 (Usr, HasAccess) VALUES ('Beaker', 1)
INSERT INTO Project_2 (Usr, HasAccess) VALUES ('TheCount', 0)
GO

Create Procedure LoadSecurityTable 
AS
    DELETE * FROM SecurityTable

    EXEC sp_MSForEachTable 
        @command1 = 'INSERT INTO SecurityTable (Usr, HasAccess) SELECT Usr, HasAccess FROM ?',
        @whereand = 'AND o.name LIKE ''Project_%'''
GO

EXEC LoadSecurityTable
SELECT * FROM SecurityTable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara terbaik untuk mengenkripsi SSN di SQL Server 2008?

  2. Kesalahan 'sublaporan tidak dapat ditemukan di lokasi yang ditentukan. Harap verifikasi bahwa sublaporan telah diterbitkan dan nama sudah benar'

  3. Mengambil catatan terbaru dalam kueri

  4. Bagaimana cara mendapatkan ID catatan catatan dengan tanggal minimum untuk setiap kunci asing?

  5. Bisakah saya menyimpan 'Objek' di database SQL Server?