USE master
--使用语句 COLLATE SQL_Latin1_General_CP1_CI_AS将数据库设置为大小写不敏感
CREATE DATABASE [DB1] ON PRIMARY ( name = N'DB1', filename = N'C:/DATA/DB1.mdf',
size = 4048kb, filegrowth = 1024kb ) LOG ON ( name = N'DB1_log', filename =
N'C:/DATA/DB1_log.ldf', size = 4024kb, filegrowth = 10%) COLLATE
sql_latin1_general_cp1_ci_as
GO
USE [DB1]
GO
IF NOT EXISTS (SELECT name
FROM sys.filegroups
WHERE is_default = 1
AND name = N'PRIMARY')
ALTER DATABASE [DB1] MODIFY filegroup [PRIMARY] DEFAULT
GO
CREATE TABLE A
(
A INT PRIMARY KEY,
B VARCHAR(50)
)
--运行正常
SELECT *
FROM a
WHERE a = 1
AND b = '2'
GO
--如上语句,可以正常创建
CREATE PROCEDURE Proc1
AS
SELECT *
FROM a
WHERE a = 1
AND b = '2'
GO
--创建失败因为@ID不存在,也就说@Id和@ID区别对待(大小写还是敏感的!!)
CREATE PROCEDURE Proc2 (@Id INT)
AS
BEGIN
SELECT *
FROM a
WHERE a = @ID
AND b = '2'
END
GO
--将@ID改正为@Id后重新创建,成功!!
CREATE PROCEDURE Proc3 (@Id INT)
AS
BEGIN
SELECT *
FROM a
WHERE a = @Id
AND b = '2'
END
GO
--创建失败因为@ID不存在,也就说@Id和@ID区别对待(大小写还是敏感的!!)
CREATE TRIGGER trtest2
ON a
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @Id INT
SET @ID = 0
IF EXISTS(SELECT *
FROM inserted)
BEGIN
SET @ID=(SELECT COUNT(*)
FROM inserted)
END
PRINT CONVERT(NVARCHAR(20), @ID) +
' rows has been added/updated in table A!'
END
GO
--将@ID改正为@Id后重新创建,成功!!
CREATE TRIGGER trtest1
ON a
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @Id INT
IF EXISTS(SELECT *
FROM inserted)
BEGIN
SET @Id=(SELECT COUNT(*)
FROM inserted)
END
PRINT CONVERT(NVARCHAR(20), @Id) +
' rows has been added/updated in table A!'
END
GO
--调用时大小写不匹配,执行成功!
EXEC Proc3 @iD=3
INSERT INTO a
SELECT 5, '2'