小编ype*_*eᵀᴹ的帖子

日程表中的盲写是什么意思?

我知道每个冲突可序列化的时间表都是可视图序列化的,但反之则不然。我在一个网页中读到,当日程表可查看序列化但不可冲突序列化时,则存在一些盲目写入。那么什么是盲写呢?

transaction database-theory jobs serialization

3
推荐指数
1
解决办法
9615
查看次数

外键应该放在哪个表上

我正在学习数据库。在我非常简单的数据库中,我有 2 个表。

WorkingHoursDetail

ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)

WorkingHours

ID
Name
Run Code Online (Sandbox Code Playgroud)

如您所见,它们目前没有关联。

现在,我面临着将它们联系起来的问题。我知道我通过添加一个外键来做到这一点,比如 MyOtherTableID 并将其链接到其他表 ID。

在上面的示例中,我可以向 EITHER 添加外键

WorkingHoursDetail

ID
NameOfWeek
Hours
WorkingHoursId
Run Code Online (Sandbox Code Playgroud)

WorkingHours

ID
Name
Run Code Online (Sandbox Code Playgroud)

或者

WorkingHoursDetail

ID
NameOfWeek
Hours
Run Code Online (Sandbox Code Playgroud)

WorkingHours

ID
Name
WorkingHoursDetailId
Run Code Online (Sandbox Code Playgroud)

我试过这个,它似乎有效,但是这个选项让我害怕。是否有一个“正确”的答案,或者这种变化只会影响数据写入数据库的顺序。如果是这种情况,那么这肯定会决定使用它的程序的流程(用户 GUI)。

sql-server

3
推荐指数
1
解决办法
5911
查看次数

在两列中存储相同的序列值

我有一个表,其中一列是自动递增序列号。我也希望将相同的值存储在另一列中(以便以后可以更改)。

我的表结构是这样的:

CREATE TABLE Test
(
    test_id integer NOT NULL DEFAULT nextval('test_id_seq'::regclass),
    ...
    ...
    uid integer not null DEFAULT currval('test_id_seq'::regclass),
)
Run Code Online (Sandbox Code Playgroud)

我想要uid = test_id但问题是在一个会话中插入多行时。然后currval不采取正确的ID。

我不想使用触发器。我该如何管理?

postgresql postgresql-9.3

3
推荐指数
1
解决办法
2838
查看次数

如何在单个字段中存储多个外键值?

我在MS SQL-Server数据库中有以下两个表:

user_info
  ( user_id PRIMARY KEY, 
    email, 
    password
  ) 
Run Code Online (Sandbox Code Playgroud)

messages
  ( time_stamp, 
    message, 
    sender, 
    recipients, 
    FOREIGN KEY(sender) 
      REFERENCES user_info (user_id), 
    FOREIGN KEY(recipients) 
      REFERENCES user_info (user_id)
  ) 
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以user_idmessages表的收件人字段中存储多个值。我是新手,请帮助我如何解决这个问题。

foreign-key sql-server primary-key

3
推荐指数
1
解决办法
6060
查看次数

使用大量数据更改 postgresql 表

我的数据库中有一个表,其中有几个简单的列和一个二进制列。该表的主键是一个integer类型。

我面临的问题是自动递增的主键列已达到其最大限制 +2147483647。意味着该表中有大约 20 亿条记录。由于该表中的二进制列,它255 GB在磁盘上有大约大小。

现在,由于该数据类型限制,对该表的所有插入都已停止。逻辑解决方案是我们将该主键列转换为bigint. 但是由于ALTER TABLE命令的大小总是失败,有时甚至数据库进入不一致的状态,我们根本无法访问该表。

使用的语句:

ALTER TABLE table_name ALTER COLUMN id SET DATA TYPE bigint ;
Run Code Online (Sandbox Code Playgroud)

任何人都有任何建议来解决这个问题。

postgresql postgresql-9.1

3
推荐指数
1
解决办法
1475
查看次数

数据库基线

我是一名 SQL Server 意外 DBA,他继承了一些数据库,并试图设置基线阈值来监视这些服务器。

有谁知道解决这个问题的好方法?

我希望做的事情如下:我想在每个 SQL Server 实例上捕获不同的指标,这样当我们遇到问题时,我总是可以回到基线并查看它的变化之处。我想以此作为故障排除的起点。

sql-server sql-server-2012

3
推荐指数
1
解决办法
222
查看次数

MySQL 在 ORDER BY 之前运行 WHERE 子句吗?

我有这个查询:

SELECT my_code 
FROM ranges 
WHERE 123456789 BETWEEN first_number AND last_number 
ORDER BY type_of_code ASC LIMIT 1 ;
Run Code Online (Sandbox Code Playgroud)

我的问题是,它会在ORDER BYWHERE子句中选择行之后运行吗?

KEYfirst_numberlast_number。我的桌子大约有 500 万行。我不想ORDER BY先。

mysql optimization order-by where

3
推荐指数
1
解决办法
3593
查看次数

是否 || 如果其中一列为空白,Postgres 中的运算符会导致空白结果吗?

我在 Postgres 中使用||运算符连接一些列运行查询,似乎其中一列为空,整个结果为空。这是正常||行为吗?

我的意思是“空白” NULL

postgresql operator

3
推荐指数
1
解决办法
584
查看次数

查找不重复的行

我有两个 DB2 表。

表 1,称为 EmployeeFile

EmployeeFile 有以下列: EMP_ID, FNAME, LNAME, DOB

数据如下所示:

   EMP_ID, FNAME, LNAME, DOB
 - GB2342, John,  Smith, 1970-12-10
 - L3243C, Jane,  Jones, 1969-11-09
Run Code Online (Sandbox Code Playgroud)

表2,称为 OriginalData

OriginalData有以下列:INTERNAL_ID, FNAME, LNAME, DOB.

数据如下所示:

   INTERNAL_ID, FNAME, LNAME,    DOB
 - 6575678588,  Jane,  Jones,    1969-11-09
 - 1232145564,  Rob,   Mitchell, 1968-10-08
 - 3452345345,  John,  Smith,    1970-12-10
 - 6786478568,  John,  Smith,    1970-12-10
Run Code Online (Sandbox Code Playgroud)

我想说明的所有行EmployeeFile的该(FNAME, LNAME, DOB)组合只发生一次OriginalData

例如,如果我在上面显示的示例数据集上运行查询,它应该只返回以下行:

  • 简,琼斯,1969-11-09

我不想要“John Smith”,因为尽管他存在于 中EmployeeFile,但他的(FNAME, LNAME, DOB) …

db2

3
推荐指数
1
解决办法
66
查看次数

SQL 处理多个 AND 条件

我有以下数据:

机构_编号 信用类型
1 1
1 2
2 1

我有一个列表框,以便用户可以选择多个 Cred_type,他们希望能够选择 OR 或 AND 条件。

对于 OR 我有这样的 AND CRED_TYPE IN (1,2)

对于AND,我真是摸不着头脑。他们的意思是,他们想要一份具有cred type 1和cred_type 2的机构列表。也许我没有想清楚,但这是逐行的,所以这样做会导致没有结果。

AND cred_type = 1 AND cred_type = 2 -- 您不能让一行有两个不同的值,这将不会返回任何结果。

它们要求用户可以选择 10、20 或更多,因此为每个代码编写一堆代码并将它们组合起来非常困难 - 但这是我迄今为止唯一的想法。会是这样的

Select institution_no from table where cred_type = 1
UNION 
Select institution_no from table where cred_type = 2
Run Code Online (Sandbox Code Playgroud)

-- 这会将两者结合起来并得到我想要的东西,但你可以想象其中 10 或 20 个的所有代码。

oracle relational-division

3
推荐指数
1
解决办法
600
查看次数