我有一个表有几个字段,包括:
contact_id
和phone
是主键,phone_id
是自动增量字段。我想用它来识别某个条目。所以我想知道在我输入数据时可以复制非主要字段。
答案 0 :(得分:1)
除非没有约束,一些唯一索引,否则您可以复制该列中的值,因为1)您可以打开identity_insert,2)您可以重新设置增量。
这是一个证据:
override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
switch kind{
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "HeaderView", forIndexPath: indexPath) as! CollectionViewHeader
var headerString = westBeaches[indexPath.section] as NSString
var newSize: CGSize = headerString.sizeWithAttributes([NSFontAttributeName:headerView.headerText.font])
headerView.frame.size.width = newSize.width + 20
headerView.layer.cornerRadius = 15
headerView.headerText.text = westBeaches[indexPath.section]
headerView.center.x = collectionView.center.x
headerView.alpha = 0.7
return headerView
default:
assert(false, "Unexpected element Kind")
}
}
输出:
CREATE TABLE #test(id INT IDENTITY(1, 1))
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
SET IDENTITY_INSERT #test ON
INSERT INTO #test(id) VALUES(1)
SET IDENTITY_INSERT #test OFF
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
DBCC CHECKIDENT ('#test', RESEED, 1);
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
SELECT * FROM #test
DROP TABLE #test
答案 1 :(得分:1)
简短的回答是是的,这是可能的。
SQL Server不会对标识列强制使用唯一约束,这意味着它可以具有重复值,但是,Sql server不会在标识列中生成重复值。
当您向表中插入行时,sql server中的标识列由sql server自身填充。
但是,您可以在插入语句之前使用SET IDENTITY_INSERT
为其指定值。
您应该注意以下几点:
set identity insert on
用于一个以上的表。因此,在您将记录插入表后,必须在该表上设置identity_insert。