我有一个像这样的列的表当前是活的:
name NVARCHAR(128) NOT NULL DEFAULT ''
Run Code Online (Sandbox Code Playgroud)
我正在改变这样的列,使其可以为空:
ALTER TABLE mytable ALTER COLUMN name NVARCHAR(128) NULL
Run Code Online (Sandbox Code Playgroud)
但是,在表的一个实例中名为"DF__mytable__datab__7DE4B36"的默认约束仍然存在.我知道如果原作者命名约束,就可以避免这种情况.我有几个这些表的实例,但我不想手动删除每个表中的每个约束.在Sql Server中的一个列上删除这个默认约束的最简单和最优雅的方法是什么,我可以统一地应用于该表的每个实例?
这是我最终使用的脚本:
DECLARE @table_id AS INT
DECLARE @name_column_id AS INT
DECLARE @sql nvarchar(255)
-- Find table id
SET @table_id = OBJECT_ID('mytable')
-- Find name column id
SELECT @name_column_id = column_id
FROM sys.columns
WHERE object_id = @table_id
AND name = 'name'
-- Remove default constraint from name column
SELECT @sql = 'ALTER TABLE mytable DROP CONSTRAINT ' + D.name
FROM sys.default_constraints AS D …Run Code Online (Sandbox Code Playgroud) 我注意到这两个模式用于检查枚举标志:
[Flags]
public enum PurchaseType
{
None = 0,
SalePrice = 2,
RegularPrice = 4,
Clearance = 8,
CreditCard = 16
}
public void Test()
{
PurchaseType type = PurchaseType.Clearance;
type |= PurchaseType.CreditCard;
// Practice 1
if ((type & PurchaseType.Clearance) == PurchaseType.Clearance)
{
// Clearance item handling
}
// Practice 2
if ((type & PurchaseType.CreditCard) != 0)
{
// Credit card item handling
}
}
Run Code Online (Sandbox Code Playgroud)
在检查枚举标志的两种方法中,哪一种更好,性能,可读性,代码健康以及我应该做出的任何其他考虑?
谢谢,穆罕默德
根据MSDN中的这篇文章,WCF行为的评估顺序是:
我有一个服务,它使用ServiceAuthorizationManager类对请求执行一些自定义安全验证.此授权管理器连接到实现IServiceBehavior的ServiceAuthorizationBehavior.
我还定义了实现IEndpointBehavior的自定义行为.
根据上面的顺序,应该在服务行为之前评估端点行为,但是,日志证明不是这样.正在评估端点行为之前的ServiceAuthorizationBehavior.
这是一个错误吗?这里发生了什么?
谢谢,穆罕默德
.net ×1
c# ×1
database ×1
enum-flags ×1
enums ×1
sql ×1
sql-server ×1
t-sql ×1
wcf ×1
web-services ×1