小编ds1*_*709的帖子

插入表并在另一个表中更新UPDATE外键(SQL Server 2008)

我有两个表,TableATableB像这样:

TableA
-------------------------------------------
|  id  |  some_data  | new_FK_column_on_B |
| ---- | ----------- | ------------------ |
|   1  |     ...     |        null        |
|  ... |     ...     |        null        |
|  999 |     ...     |        null        |
-------------------------------------------

TableB
----------------------------
|  id  |  some_other_data  |
| ---- | ----------------- |
|      |                   |
----------------------------
Run Code Online (Sandbox Code Playgroud)

此刻,TableB是空的,FK列TableAnull对所有行。我需要编写一次初始化脚本TableB,以便TableA通过插入的行中的标识符填充和初始化某些行(标准的,不是全部)的FK列TableB

我知道两种方法可以做到这一点:

1)使用whilescope_identity(),将新行插入TableB并 …

sql foreign-keys insert sql-server-2008

5
推荐指数
2
解决办法
2745
查看次数

修改字节中的特定位

我需要修改(!不是切换异或!)字节值中的特定位。我有:

  1. 来源byte(例如b11010010);
  2. 要修改的位索引(例如4);
  3. 0位(或)的新值1

现在,我需要什么。如果新值为0,则位[4] 必须设置为0。如果新值为1,则位[4] 必须设置为1

通用部分:

var bitIndex = 4;
var byte = b11010010;
var mask = 1 << bitIndex;
var newValue = 1;
Run Code Online (Sandbox Code Playgroud)

这是最简单的方法:

if(newValue == 1)
    byte |= mask; // set bit[bitIndex]
else
    byte &= ~mask; // drop bit[bitIndex]
Run Code Online (Sandbox Code Playgroud)

另一种方法允许在不if else声明的情况下执行此操作,但看起来很难理解:

byte = byte & ~mask | (newValue << bitIndex) & mask
Run Code Online (Sandbox Code Playgroud)

这里,第一个AND删除bit[bitIndex],第二个 …

c# bitwise-operators

5
推荐指数
1
解决办法
5056
查看次数