weixin_51000292 2021-08-15 20:15 采纳率: 0%
浏览 33

如何利用触发器实现在表中插入数据的同时,利用数据新建数据库账号

在建立一个网站,想着在用户表插入内容的同时,利用表中(用户账号,用户密码)两项自动创建新的数据库账号,并且赋予某表的权限。但无奈这三脚猫功夫,实在过不了。附上代码,劳烦各位看一下:

create trigger new_account on yonghu
for insert
as
BEGIN
    DECLARE @ACCOUNT VARCHAR(10)
    DECLARE @PW VARCHAR(20)
    SELECT @ACCOUNT=inserted.用户账号 from inserted
    SELECT @PW=inserted.用户账号 from inserted
    If not exists (select Book.用户帐号 from yonghu where Book.用户帐号=@ACCOUNT)
        BEGIN
            CREATE LOGIN [inserted.用户账号] WITH PASSWORD=inserted.用户密码, DEFAULT_DATABASE=[WANGZHAN], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
            GO
            USE [WANGZHAN]
            GO
            CREATE USER [inserted.用户账号] FOR LOGIN [inserted.用户账号]
            GO
            USE TOSEE
            GRANT Alter,Delete,Insert,Select,Update ON WENZHANG TO inserted.用户账号
            GRANT Select,Update ON yonghu TO inserted.用户账号
            GO
        END
    ELSE
        BEGIN
            RAISERROR('该账号已被注册',16,1)
            ROLLBACK
        END
END

报错信息如下:
消息 102,级别 15,状态 1,过程 new_account,行 11 [批起始行 0]
“inserted”附近有语法错误。
消息 15007,级别 16,状态 1,第 15 行
'inserted.用户账号' 是无效登录名或您没有相应的权限。
消息 102,级别 15,状态 1,第 18 行
“.”附近有语法错误。
消息 102,级别 15,状态 1,第 19 行
“.”附近有语法错误。
消息 156,级别 15,状态 1,第 22 行
关键字 'ELSE' 附近有语法错误。
消息 102,级别 15,状态 1,第 27 行
“END”附近有语法错误。

麻烦各位了。

  • 写回答

1条回答 默认 最新

  • 关注

    这种dml触发器没有权限操作系统表权限。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月15日

悬赏问题

  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号