求一个SQL触发器代码

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:34:00
1、在企业管理器中更改一个表保存时,弹出警告:

- 警告:一或多个现存列的 ANSI_PADDING 设置为 'off' ,并且将以 ANSI_PADDING 为 'on' 的设置被重新创建。
- 警告:表的 ANSI_NULLS 设置为 'off',并且将以 ANSI_NULLS 为 'on' 的设置被重新创建。

请问:
1、列的ANSI_PADDING属性是什么意思?ON和OFF各起什么作用?
2、表的ANSI_NULLS属性是什么意思?ON和OFF各起什么作用?
3、表的ANSI_NULLS属性和列的ANSI_PADDING属性要怎么设置?

4、现有一个表A,有三列,A01,A02,A03
A01为主键,现在想要在表A上创建一个触发器,
功能为:
当A02的值被更改为'Y'时,更新A03的值为当前的数据库时间,求这个触发器的代码,最好能有详细解释.
楼下没看清我的要求,我的要求是只有当A02被更改为'Y'时才更新A03的值为当前数据库时间,如果A02值不为'Y'则不更新A03值.
还有就是更新的A03的值如何定义为"YYYY-MM-DD HH:MM:SS"格式?

1:SET ANSI_PADDING 为 ON 时,将允许空值的 Char(n) 和 binary(n) 列填充到列长,而当 SET ANSI_PADDING 为 OFF 时,将剪裁尾随空格和零。始终将不允许空值的 Char(n) 和 binary(n) 列填充到列长。
建议始终将 ANSI_PADDING 设置为 ON。在计算列或索引视图上创建或操作索引时,SET ANSI_PADDING 必须为 ON。
2:
指定与空值一起使用时的等于 (=) 和不等于 (<>) 比较运算符的 SQL-92 标准行为。
当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。 即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。 使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。 使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。 此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
CREATE trigger test on dbo.tt
for update
as
declare @qdate char(20)
declare @did char(20)
select @qdate=a1 from inserted
select @did=a0 from inserted
if(@qdate='Y')
begin
update tt set a2=getdate() whe