gpt4 book ai didi

SQL Server 从另一个表插入数据

转载 作者:行者123 更新时间:2023-12-01 04:40:05 24 4
gpt4 key购买 nike

在我的数据库中,我有表:

  • 系统权限(权限表)
  • 管理员 (AdminsTable)
  • 管理员权限 (AdminsPrivilegesTable)。

  • 我想在插入新的管理数据后将数据插入到 AdminsPrivilegesTable 我将为此使用触发器,但我需要查询以获取管理员 ID 并从 PrivilegesTable 获取所有权限 ID 并将其插入到 AdminsPrivilegesTable。我使用了这个查询,但不起作用。
    INSERT INTO [AdminsPrivilegesTable]
    ([ID]
    ,[AdminID]
    ,[PrevlgID]
    ,[Status])
    VALUES
    ((SELECT ISNULL(MAX(ID)+1,1) FROM AdminsPrivilegesTable)
    ,(SELECT ID FROM Inserted)
    ,(SELECT ID FROM PrivilegesTable)
    ,0)

    最佳答案

    样本数据 对于这个演示:

    CREATE TABLE SYSTEM_PRIVILEGES ([ID] INT IDENTITY NOT NULL,
    [NAME] NVARCHAR(50),
    [ISDEFAULT] INT)
    INSERT INTO SYSTEM_PRIVILEGES ([NAME], ISDEFAULT) VALUES
    ('READ', 1),
    ('EXECUTE', 0),
    ('WRITE', 0)

    CREATE TABLE ADMINS ([ID] INT IDENTITY NOT NULL, [NAME] NVARCHAR(50))
    INSERT INTO ADMINS ([NAME]) VALUES
    ('systemadmin'),
    ('backupadmin'),
    ('ITadmin')

    CREATE TABLE AdminsPrivilegesTable ([ID] INT IDENTITY,
    [AdminID] INT,
    [PrevlgID] INT,
    [Status] INT)

    现在,您希望在创建新管理员时自动在 AdminsPrivilegesTable 中插入。您正站在 2 个解决方案面前,恕我直言。
  • 询问插入 Admin 行的应用程序(或存储过程,或它所做的任何事情)在另一个表中进行新的插入,可能类似于:

  • 插入语句
    INSERT INTO AdminsPrivilegesTable ([AdminID], [PrevlgID], [Status])
    SELECT ADMINS.[ID],
    PREV.[ID],
    1
    FROM ADMINS,
    SYSTEM_PRIVILEGES PREV
    WHERE NOT EXISTS (SELECT 1
    FROM AdminsPrivilegesTable T
    WHERE T.AdminID = ADMINS.ID
    AND T.PrevlgID = PREV.ID)
  • 使用与上述相同的查询触发

  • 就像我在评论中所说的那样,我建议第一个 .

    SQL Fiddle here

    关于SQL Server 从另一个表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50700234/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com