我很困惑这些查询是否相同?有什么区别?
ALTER TABLE agent1
MODIFY commission DEFAULT .05;
ALTER TABLE agent1
add constraint myconst default(commission=0.05)
答案 0 :(得分:1)
您的语法可能来自MySQL或Oracle。在SQL Server中,这些是向现有列添加约束的两种方法:
(摘自Command for adding a default constraint)
ALTER TABLE [Common].[PropertySetting]
ADD DEFAULT ((1)) FOR [Active];
ALTER TABLE [Common].[PropertySetting]
ADD CONSTRAINT [DF_PropertySetting_Active]
DEFAULT ((1)) FOR [Active];
如果您没有提供约束名称,SQL Server将为您创建一个。
这将列出表x8的所有约束:
SELECT OBJECT_NAME(object_id) AS Name,
SCHEMA_NAME(schema_id) AS [Schema] ,
[type_desc] AS [Type]
FROM [sys].[objects]
WHERE [type_desc] LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='x8'
Constraint Schema Type
DF_x8_name dbo DEFAULT_CONSTRAINT
DF_x8_date1 dbo DEFAULT_CONSTRAINT
DF__x8__x6__117F9D9 dbo DEFAULT_CONSTRAINT
DF_PropertySetting_Active dbo DEFAULT_CONSTRAINT
t55 dbo CHECK_CONSTRAINT
您可以猜测每个约束(第三个除外)在创建时都被明确命名。 SQL Server创建了第三个名称。
您可以使用内置系统视图通过发出以下命令获取所有检查和/或默认约束的列表:
select * from sys.check_constraints
or
select * from sys.default_constraints