Transact-SQL 学习小结

1.把系统里所有用全局临时表的改成局部临时表,不然并发高时会引发对象已经存在的问题,不要用##要用#。

2.int 不能写成 id = ‘1‘,比如Select * from A where ID=‘1‘,因为本身的ID为int,那么你写的索引就没起到作用,而且SQL里面还需要转换类型,影响性能。

3.print error_message() 输出错误信息 可用于调试存储过程或其他批量SQL。也可以输入其他信息,print ‘test1‘;这个可以结合try cath,具体代码如下:

BEGIN TRY                    
    BEGIN
    INSERT INTO A
        (ID,Name)VALUES (1,‘test1‘)
    END
END TRY
BEGIN CATCH
    PRINT (仓库库存时没有找到对应的记录,所以需要新增一条,新增时失败! + ERROR_MESSAGE());
END CATCH

4.自动生成的ID,不用@@IDENTITY而用SCOPE_IDENTITY();就是新增表的时候,字段定义为字段1 int identity(1,1)

5.一般的金额和数量字段,没设约束,默认为null,都要设isnull(字段,0),或者新建表的时候,设置字段不为NUll,默认值为0,如:[字段] int NOT NULL DEFAULT(0)。

6.查询数据很多的时候,建议用with(nolock),select 字段1,字段2 from A with(nolock) 。

7.查数据额时候,尽量不要写*,比如select * from Person with(nolock),这样写select 字段1,字段2 from Person with(nolock)。

8.SQL里面判断不能为空,应该这样写(@Effect IS NOT NULL AND @Effect <> ‘‘),反之(@Effect IS NULL or @Effect = ‘‘)。

9.事务的使用:BEGIN TRAN :开始事务;COMMIT TRAN:提交事务;ROLLBACK TRAN:事务回滚。具体如下:

BEGIN TRY    
    BEGIN TRAN;    --开始事务        
    BEGIN
    INSERT INTO A
        (ID,Name)VALUES (1,‘Test1‘)
    END
    INSERT INTO B
        (ID,Name)
    VALUES (2,‘Test2‘)
    END
    COMMIT TRAN;--提交事务
END TRY
BEGIN CATCH
    ROLLBACK TRAN;--事务回滚
END CATCH

 

Transact-SQL 学习小结,布布扣,bubuko.com

Transact-SQL 学习小结

上一篇:Get size of all tables in database


下一篇:Roadblocks http://poj.org/problem?id=3255