精华内容
下载资源
问答
  • 点工具栏中〔显示估计的查询... 您可能感兴趣的文章:SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)SQL SERVER数据库表记录只保留N天图文教程SQL Server利用sp_spaceused如何查看记录存在不准确的情况
  • Mysql修改存储过程相关权限问题

    万次阅读 2020-09-21 21:44:14
    在使用mysql数据库经常都会遇到这么一个问题,其它用户定义的存储过程,现在使用另一个用户却无法修改或者删除等;正常情况下存储过程的定义者对它有修改、删除的权限;但是其它的用户就要相于的授权,不然无法查看...

    在使用mysql数据库经常都会遇到这么一个问题,其它用户定义的存储过程,现在使用另一个用户却无法修改或者删除等;正常情况下存储过程的定义者对它有修改、删除的权限;但是其它的用户就要相于的授权,不然无法查看、调用;

    mysql 中使用用户A创建一个存储过程,现在想通过另一个用户B来修改A创建的存储过程;以下记录就是基于这样的情况产生的;

    用户A对OTO3库的权限:

    mysql> show grants for 'a'@'%';
    +---------------------------------------------------+
    | Grants for a@%                              |
    +---------------------------------------------------+
    | GRANT USAGE ON *.* TO 'a'@'%'               |
    | GRANT ALL PRIVILEGES ON `OTO3`.* TO 'a'@'%' |
    +---------------------------------------------------+
    2 rows in set (0.00 sec)
    

    用户B的权限:

    mysql> show grants for 'swper'@'%';
    +----------------------------------------------------------------------+
    | Grants for swper@%                                                   |
    +----------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'swper'@'%'                                    |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' |
    +----------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    

    以用户B的身份登陆Mysql操作;

    [root@mysql ~]# mysql -h10.0.10.110 -uswper -p123456
    

    查存储过程列表时就提示没有权限了:

    mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE';
    ERROR 1142 (42000): SELECT command denied to user 'swper'@'mysql' for table 'proc'
    

    以root身份给B用户添加一个查看存储过程的权限:

    mysql> grant select on mysql.proc to 'swper'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show grants for 'swper'@'%';
    +----------------------------------------------------------------------+
    | Grants for swper@%                                                   |
    +----------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'swper'@'%'                                    |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER ON `OTO3`.* TO 'swper'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'swper'@'%'                        |
    +----------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    再回到B用户里查看存储过程列表:

    mysql> select `name` from mysql.proc where db = 'OTO3' and `type` = 'PROCEDURE';
    +------------------------+
    | name                   |
    +------------------------+
    | proc_cs                |
    +------------------------+
    1 rows in set (0.00 sec)
    

    此时发现多了一个mysql库,但只有对mysql.proc有查询权限:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | OTO3               |
    | mysql              |
    +--------------------+
    3 rows in set (0.00 sec)
    

    mysql库中只有一个表:proc

    mysql> use mysql
    mysql> show tables;
    +-----------------+
    | Tables_in_mysql |
    +-----------------+
    | proc            |
    +-----------------+
    1 row in set (0.00 sec)
    

    同样也可以看到存储过程的详细信息:

    mysql> show create procedure proc_cs\G
    *************************** 1. row ***************************
               Procedure: proc_cs
                sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
        Create Procedure: CREATE DEFINER=`a`@`%` PROCEDURE `proc_cs`()
    BEGIN
    

    尝试修改存储过程的配置:

    
    mysql> ALTER  PROCEDURE proc_cs   MODIFIES SQL DATA SQL SECURITY INVOKER;
    ERROR 1370 (42000): alter routine command denied to user 'b'@'%' for routine 'OTO3.proc_cs'
    

    为了方便查看在Navicat工具上尝试修改存储过程,在保存的时候报如下权限问题:

    1227 -Access denied;you need(at least one of)the SUPER privilege(s) for this operation

    尝试添加一个存储过程,报权限信息:

    1044 - Access denied for user ‘b’@’%’ to database ‘OTO3’

    这里表示b用户没有对OTO3有授权存储过程的修改权限;

    以B用户尝试调用一下存储过程:

    Procedure execution failed
    1370 - execute command denied to user ‘b’@’%’ for routine ‘OTO3.proc_cs’

    这里很明显连运行权限也没有;

    尝试删除原有的a用户定义的存储过程,也会报权限信息,如下:

    1370 - alter routine command denied to user ‘b’@’%’ for routine ‘OTO3.proc_cs’

    可以看出B用户连调用存储过程的权限都没有,这里先加入执行权限:

    接下来添加一个执行存储过程的权限:

    mysql> grant execute on OTO3.* to 'b'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show grants for 'b'@'%';
    +-------------------------------------------------------------------------------+
    | Grants for b@%                                                            |
    +-------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'b'@'%'                                             |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE ON `OTO3`.* TO 'b'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                 |
    +-------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    再次执行一下存储过程,发现成功了;

    时间: 0.080ms
    Procedure executed successfully
    受影响的行: 0

    那再添加一下创建添加存储过程的权限:

    mysql> grant CREATE ROUTINE on OTO3.* to 'b'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show grants for 'b'@'%';
    +-----------------------------------------------------------------------------------------------+
    | Grants for b@%                                                                            |
    +-----------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'b'@'%'                                                            |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE ON `OTO3`.* TO 'b'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                                 |
    +-----------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    上面添加权限后就可以创建存储过程了;

    CREATE DEFINER=`b`@`%` PROCEDURE `aaaa`()
    BEGIN
        #Routine body goes here...
    SELECT * from mysql.user;
    END
    

    但是自己创建的都无法删除;

    1370 - alter routine command denied to user ‘b’@’%’ for routine ‘OTO3.aaaa’

    接下来再添加一个修改的权限,也可以删除的哦;

    mysql> grant alter ROUTINE on OTO3.* to 'b'@'%';
    Query OK, 0 rows affected (0.01 sec)
    

    查看用户权限

    mysql> show grants for 'b'@'%';
    +--------------------------------------------------------------------------------------------------------------+
    | Grants for b@%                                                                                           |
    +--------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'b'@'%'                                                                            |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                                                |
    +--------------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    上面添加完alter ROUTINE权限后就可以对OTO3所有的存储过程有删除权限[自己定义的增、删、改],别人定义的可以删除,但是还不能修改;修改别人定义的存储过程会有如下提示:

    1227 - Access denied; you need (at least one of)the SUPER privilege(s) for this operation

    这里说明一下这个SUPER权限在哪里?通过查看用户权限原来在这里:

    mysql> select * from mysql.user where user='b'\G
    *************************** 1. row ***************************
                      Host: %
                      User: b
               Select_priv: N
               Insert_priv: N
               Update_priv: N
               Delete_priv: N
               Create_priv: N
                 Drop_priv: N
               Reload_priv: N
             Shutdown_priv: N
              Process_priv: N
                 File_priv: N
                Grant_priv: N
           References_priv: N
                Index_priv: N
                Alter_priv: N
              Show_db_priv: N
                Super_priv: N
     Create_tmp_table_priv: N
          Lock_tables_priv: N
              Execute_priv: N
           Repl_slave_priv: N
          Repl_client_priv: N
          Create_view_priv: N
            Show_view_priv: N
       Create_routine_priv: N
        Alter_routine_priv: N
          Create_user_priv: N
                Event_priv: N
              Trigger_priv: N
    Create_tablespace_priv: N
                  ssl_type:
                ssl_cipher:
               x509_issuer:
              x509_subject:
             max_questions: 0
               max_updates: 0
           max_connections: 0
      max_user_connections: 0
                    plugin: mysql_native_password
     authentication_string: *CCB4F88E945E0E14F9BEB093EB797BB0BDBFA175
          password_expired: N
     password_last_changed: 2017-03-06 11:37:35
         password_lifetime: NULL
            account_locked: N
    1 row in set (0.00 sec)
    

    尝试添加一下这个SUPER权限看看:

    mysql> grant SUPER on OTO3.* to 'b'@'%';
    ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
    
    mysql> grant SUPER on *.* to 'b'@'%';
    Query OK, 0 rows affected (0.00 sec)
    

    不能对指定的库执行这个权限,因为SUPER为全局的就是整个mysql的权限;

    mysql> show grants for 'swper'@'%';
    +--------------------------------------------------------------------------------------------------------------+
    | Grants for swper@%                                                                                           |
    +--------------------------------------------------------------------------------------------------------------+
    | GRANT SUPER ON *.* TO 'swper'@'%'                                                                            |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'swper'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'swper'@'%'                                                                |
    +--------------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    再次检查时会发现 Super_priv: Y 变化了;再修改一下别人定义的存储过程;

    mysql> select * from mysql.user where user='b'\G
    

    查看所有数据库,发现mysql库只有一张proc表有读取的权限,SUPER并非我所想象中那么强大;

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | OTO3               |
    | mysql              |
    +--------------------+
    3 rows in set (0.00 sec)
    

    仔细观看会发现执行语句:

    mysql> select * from mysql.user where user='b'\G
    

    可以看到有 Create_routine_priv: N和 Alter_routine_priv: N 这两个明显就是对存储过程的权限嘛,能不能不用SUPER而使用这两个权限呢?

    回收一下这个SUPER权限;

    mysql> revoke super on *.* from 'b'@'%';
    Query OK, 0 rows affected (0.01 sec)
    

    再添加Alter_routine_priv,Create_routine_priv

    mysql> grant alter routine,create routine on *.* to 'b'@'%';
    Query OK, 0 rows affected (0.00 sec)
    

    查看用户b权限

    mysql> show grants for 'b'@'%';
    +--------------------------------------------------------------------------------------------------------------+
    | Grants for b@%                                                                                           |
    +--------------------------------------------------------------------------------------------------------------+
    | GRANT CREATE ROUTINE, ALTER ROUTINE ON *.* TO 'b'@'%'                                                    |
    | GRANT SELECT, UPDATE, DELETE, DROP, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                                                |
    +--------------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    发现还是报相同的权限问题:

    1227 - Access denied; you need (at least one of)the SUPER privilege(s) for this operation

    执行上面权限后发现,可以看到其它的系统库:[例如sys库也有存储过程,由于这两个权限是全局的]

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | OTO3               |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    +--------------------+
    6 rows in set (0.00 sec)
    

    这两个权限更大,连系统库sys中的存储过程都能看到,甚至修改删除,非常危险;决定再次回收权限

    create routine,alter routine;
    mysql> revoke create routine,alter routine on *.* from 'b'@'%';
    

    还是使用SUPER权限比较安全;

    通过上面的测试得出以下结论:

    • 查看存储过程权限:SELECT #是对mysql.proc表的权限;
    • 执行存储过程权限:EXECUTE #是对指定数据库的权限;
    • 创建存储过程权限:CREATE ROUTINE #是对指定数据库的权限;
    • 修改存储过程权限:ALTER ROUTINE #是对指定数据库的中自己定义的存储过程;
    • 修改别人定义的存储过程权限:SUPER #是对全局整个mysql的权限;

    简来说用户A在数据库OTO3中定义了一个存储过程,现在想用用户B来执行、修改存储过程,需要对用户B添加以下权限:

    GRANT SELECT ON MYSQL.PROC TO 'B';
    GRANT EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'B';
    GRANT SUPER ON *.* TO 'B';
    

    所以用户B的最基本的权限:

    mysql> show grants for 'b'@'%';
    +----------------------------------------------------------------------------------------+
    | Grants for b@%                                                                     |
    +----------------------------------------------------------------------------------------+
    | GRANT SUPER ON *.* TO 'b'@'%'                                                      |
    | GRANT SELECT, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `OTO3`.* TO 'b'@'%' |
    | GRANT SELECT ON `mysql`.`proc` TO 'b'@'%'                                          |
    +----------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    

    至此,对于Mysql中以另的用户修改其它人定义的存储过程权限也就非常的显白了;

    如果不是以另一个用户身份调用存储过程,可以使用root权限修改存储过程的定义者; 这样就等于linux里的所有者权限变更了;

    update mysql.proc set DEFINER='b'@'%' WHERE NAME='proc_cs' AND db='OTO3';
    展开全文
  • 登陆数据库后,右键打开表提示:目录名无效,执行SQL语句也提示有错误,本来想重装的这个肯定能解决,但是这个方法真的不视为上上策啊,于是在网上找到了这个解决办法,还真是立即见效啊!...查看发现...

    登陆数据库后,右键打开表提示:目录名无效,执行SQL语句也提示有错误,本来想重装的这个肯定能解决,但是这个方法真的不视为上上策啊,于是在网上找到了这个解决办法,还真是立即见效啊!分享给大家,希望有帮助奥SQLServer2005:在执行批处理时出现错误。错误消息为: <wbr>目录名无效

     

    点工具栏中〔显示估计的查询计划〕,结果提示Documents and Settings\XXX\Local Settings\Temp\1\xxx.tmp文件不能访问。查看发现没有1这个子目录--这是给1号远程连接会话用的临时目录,手工创建子目录1,即可正常查询

     

     

    转载于:https://www.cnblogs.com/zgqys1980/p/3510806.html

    展开全文
  • 最近项目需要迁库,顺便学习了一下Sybase数据库存储过程,转化为Mysql数据库存储过程,我也算是初 学者,记录一下学习过程,若有问题还望会者不吝赐教。注意:主要修改语法上有区别的地方,业务逻辑不可修改。 1....

    最近项目需要迁库,顺便学习了一下Sybase数据库存储过程,转化为Mysql数据库存储过程,我也算是初 学者,记录一下学习过程,若有问题还望会者不吝赐教。

    注意:主要修改语法上有区别的地方,业务逻辑不可修改。
    1.存储过程中使用事务时需注意,mysql的引擎有的不支持事务,如myisam引擎,此时事务没有作用;
    innodb引擎是支持事务的,但要查看系统参数(autocommit)设置是否自动commit,若值为on表示事务自动提交,off表示手动去commit。
    2.传入参数声明注意:mysql存储过程中,IN表示输入参数,OUT表示从存储过程内部输出参数,INOUT表示可以传入参数,也可以输出参数。
    3.执行成功或失败返回值注意,sybase用return返回,mysql没有return所以需要用lable_a:标识返回,用LEAVE lable_a;返回。
    4.mysql判断成功执行条数注意,判断Select得到的行数用found_rows()函数进行判断;判断Update或Delete影响的行数用row_count()函数进行判断,这里需要注意,如果Update前后的值一样,row_count则为0,而不像SqlServer里的@@rowcount或Oracle里的rowcount,只要update到行,影响的行数就会大于0,而无论update前后字段的值是否发生了变化。
    5.数字库字段用到关键字注意,比如value或type,需要用 “ 符号(Esc键下边的符号)将字段括起来,否则报错。
    6.sybase转为mysql时间注意,mysql中的now() 函数可直接替换sybase中的getdate() 函数。
    7.语法结构注意,IF语句使用的是IF…THEN END IF的语法结构,CASE语句CASE… WHEN … THEN ELSE .. END CASE,WHILE语句WHILE…END WHILE

    Sybase存储过程实例:

    DROP PROCEDURE resetMOdzhangHaoPass
    GO
    CREATE PROCEDURE resetMOdzhangHaoPass 
    @zhid numeric(19,0) in,
    @zhnewpass varchar(128) in,
    @zhpasstime datetime in
    AS
    BEGIN TRAN         
       UPDATE dzhanghaoInfo SET zhPass=@zhnewpass,zhPasstime=@zhpasstime WHERE zhid=@zhid 
           IF @@rowcount=0
         BEGIN
         COMMIT TRAN
         RETURN 1
           END                   
    COMMIT TRAN
    RETURN 0
    GO

    修改为mysql存储过程实例

    DELIMITER //
    CREATE PROCEDURE resetMOdzhangHaoPass(
    IN in_zhid NUMERIC(19,0),
    IN in_zhnewpass VARCHAR(128),
    IN in_zhpasstime DATETIME,
    
    OUT out_retcode INT
    )
    
    lable_a:BEGIN
        UPDATE dzhanghaoInfo SET zhPass=in_zhnewpass,zhPasstime=in_zhpasstime WHERE zhid=in_zhid;
        IF ROW_COUNT()=0 THEN
          SET out_retcode = 1;
          COMMIT;
          LEAVE lable_a;
        ELSE
          SET out_retcode = 0;
          COMMIT;
          LEAVE lable_a;
        END IF;
    END //
    展开全文
  • 存储过程整理

    2020-09-02 19:21:20
    1.oracle 中如何查看某个表所涉及的存储过程 select * from user_source s WHERE s.text LIKE ‘%AB08%’ 2.type numbers is table of number index by binary_integer;其作用是,加了”index by binary_integer ”后...

    存储过程 知识总结

    1.oracle 中如何查看某个表所涉及的存储过程
    select * from user_source s WHERE s.text LIKE ‘%AB08%’

    2.type numbers is table of number index by binary_integer;其作用是,加了”index by binary_integer ”后,numbers类型的下标就是自增长,

    3.sql%rowcount用于记录修改的条数,必须放在一个更新或者删除等修改类语句后面执行,select语句用于查询的话无法使用,

    当你执行多条修改语句时,按照sql%rowcount 之前执行的最后一条语句修改数为准。

    4.我们只能关闭当前处于打开状态的游标,可借助%ISOPEN判断:
    IF cursor_name%ISOPEN
    THEN
    CLOSE cursor_name;
    END IF;
    如果我们打开的游标超过会话级别设定的数量(OPEN_CUSSORS),则会抛出:
    ORA-01000:maximum open cursors exceeded
    如果遇到这个异常,Think认为,应首先定位到,包级别游标的使用情况

    展开全文
  • 下面的存储过程,略加修改后,可以用来查看某个用户所有表的记录数,每个表占用的空间等[@more@]CREATE FUNCTION row_count (tab_name VARCHAR2) RETURN INTEGER AS ...
  • Oracle 实验7 存储过程

    2020-10-15 21:00:42
    2.掌握存储过程查看修改、删除。 二、实验内容 1.根据输入的学号修改年龄,使年龄加1,并调用存储过程。 2.创建存储过程,根据输入的学号,显示学生的信息,并调用存储过程。 3.利用输入参数向SCORE表插入...
  • 本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; c..
  • 高级SQL语句一、数据库函数1、数学函数2、聚合函数3、字符串函数4、日期时间函数二、存储过程1、概述2、简介3、优点4、创建存储过程(1)语法(2)参数(3)过程体(4)DELIMITER 命令5、查看存储过程6、修改存储...
  • MySQL存储过程:批量为用户授权

    千次阅读 2014-09-19 12:46:52
    2. 需要对所有的用户进行授权,让大家要可通过调用 pub_getSlowQuery( limit ) 存储过程获取一天的慢查记录数据。 3. 存储过程命名约定:priv_ 起头的为私有存储过程,不需要对用户授权,以pub_起头的存储过程对所有...
  • 公司内设备管理系统中设备建账功能,...用存储过程自动生成编码岂不是更效率。需求:根据设备组代码(PC)+递增数字,构成编码,编码中数字必须为三位数,无三位数的,以‘0’占位。代码如下:--测试数据库准备 usemas...
  • 3.4.2 查看存储过程 3.4.3 重命名存储过程 3.4.4 删除存储过程 3.4.5 查看相关和有依赖关系的对象 3.5 存储过程在数据库应用开发中的作用 3.5.1 增强数据完整性 3.5.2 复杂商业规则和约束的一致实现 3.5.3 模块化...
  • 在项目开发过程中,需要支持...查看字符集命令 全系统 show variables like 'char%'; 单表 show create table tabname; 过程 1.关闭服务器 2.导出数据库表结构及记录 mysqldump -uroot -p --default-c
  • 一.视图 (view)  视图是一种虚拟表,可以...修改视图,(原始表的记录也跟着修改)    4.查看视图   二. 触发器(trigger)可进行 增删改 操作  1.创建触发器              2.删除触...
  • 一、视图 视图是一虚拟表,该表中的记录是一个查询语句執行后所得到的查询结果所构成的。字段值来源於其他被引用表或视图....主要是根据不同的用户可以创建不同的视图,用户只能查看修改其所能看到的视图中的数...
  • 10.13 视图 1、什么是视图 视图就是通过查询得到一张虚拟表,然后...视图记录的增、删、改和表方法相同,但改变视图记录,原始表也跟着改,所以不要修改视图记录,只用于查看 create view teacher2course as ...
  • 3.4.2 查看存储过程 3.4.3 重命名存储过程 3.4.4 删除存储过程 3.4.5 查看相关和有依赖关系的对象 3.5 存储过程在数据库应用开发中的作用 3.5.1 增强数据完整性 3.5.2 复杂商业规则和约束的一致实现 3.5.3 模块化...
  • )触发器死循环六个触发器的执行时机新增前、新增后、删除前、删除后、更新前、更新后小案例(新增后)扩展: 视图、存储过程查看NEW对象指代的就是当前记录(对象)事务 *****什么是事务事务的四...
  • 修改表ALTER TABLE 六 复制表 七 删除表 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行...
  •  本教程为大家介绍SQL Server触发器创建、删除、修改... 一、触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复
  • 一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二: SQL Server为每个触发器都创建了两...
  • 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。
  • 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL Server为每个触...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 671
精华内容 268
关键字:

查看存储过程修改记录