小编Dan*_*ray的帖子

为什么 MS SQL Server SEQUENCE 没有像 Oracle 那样的 ORDER 参数?

for T-SQL的文档中CREATE SEQUENCE,可以看到该CREATE SEQUENCE命令没有ORDER参数。

为了进行比较,Oracle 文档CREATE SEQUENCE显示了ORDER/NOORDER选项:

ORDER

指定ORDER以保证按请求顺序生成序列号。如果您将序列号用作时间戳,则此子句很有用。对于用于生成主键的序列,保证顺序通常并不重要。

ORDER如果您将 Oracle 数据库与 Real Application Clusters 一起使用,则仅需要保证有序生成。如果使用独占模式,则始终按顺序生成序列号。

NOORDER

指定NOORDER是否不想保证按请求顺序生成序列号。这是默认设置。

Microsoft SQL Server 是否为SEQUENCEs提供了强排序约束?或者微软一般不认为它很重要?

sql-server sql-server-2012 sql-server-2017

9
推荐指数
1
解决办法
452
查看次数

重命名序列后如何更改 sequence_name 参数 (PostgreSQL)

我使用以下命令重命名了一个序列:

ALTER SEQUENCE TableIdSeq RENAME TO NewTableIdSeq;
Run Code Online (Sandbox Code Playgroud)

但是,当我发出\d NewTableIdSeq命令时,我得到以下输出:

       Sequence "dev.newtableidseq"
    Column     |  Type   |        Value
---------------+---------+---------------------
 sequence_name | name    | tableidseq            <--------------- HASN'T CHANGED!!
 last_value    | bigint  | 3
 start_value   | bigint  | 1
 increment_by  | bigint  | 1
 max_value     | bigint  | 9223372036854775807
 min_value     | bigint  | 1
 cache_value   | bigint  | 1
 log_cnt       | bigint  | 30
 is_cycled     | boolean | f
 is_called     | boolean | t
Run Code Online (Sandbox Code Playgroud)

如您所见,sequence_name序列的属性仍然设置为旧名称。我如何在这里更改名称?

postgresql sequence postgresql-9.6

6
推荐指数
1
解决办法
2488
查看次数

MySQL FOREIGN KEY 约束的格式不正确

我有下表定义:

CREATE TABLE `async_task` (
  `idasync_task` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `idasync_type` int(10) unsigned NOT NULL,
  `priority` tinyint(3) NOT NULL,
  `status` enum('todo','doing','failed') NOT NULL DEFAULT 'todo',
  `iduser` int(11) NOT NULL,
  `date_added` datetime NOT NULL,
  PRIMARY KEY (`idasync_task`),
  KEY `priority_id` (`priority`,`idasync_task`),
  KEY `status_type` (`status`,`idasync_type`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我在我的notification表格中添加了一列,我想指向它async_task

ALTER TABLE `notification` ADD COLUMN `async_task_id` BIGINT(20)
Run Code Online (Sandbox Code Playgroud)

当我添加以下外键时:

ALTER TABLE `notification` ADD CONSTRAINT `fk_notification_async_task` 
    FOREIGN KEY (`async_task_id`) REFERENCES `async_task`(`idasync_task`);
Run Code Online (Sandbox Code Playgroud)

我得到:

ERROR 1005 (HY000): Can't create table `my_database`.`#sql-182_2d` …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb foreign-key

6
推荐指数
2
解决办法
4万
查看次数

相当于 PostgreSQL 中的 UTF8_UNICODE_CI 排序规则

我想要 PostgreSQL 数据库中表中的一列(我使用的是 9.6 版)。我知道UTF8_UNICODE_CIMySQL上的排序规则,所以我尝试了:

CREATE TABLE thing (
    id    BIGINT PRIMARY KEY
   ,name  VARCHAR(120) NOT NULL COLLATE "UTF8_UNICODE_CI"
);
Run Code Online (Sandbox Code Playgroud)

但我得到:

ERROR: collation "UTF8_UNICODE_CI" for encoding "UTF8" does not exist
Run Code Online (Sandbox Code Playgroud)

环顾四周,我发现pg_collation表格显示了排序规则,其中显示:

=# SELECT * from pg_collation;
 collname | collnamespace | collowner | collencoding | collcollate | collctype
----------+---------------+-----------+--------------+-------------+-----------
 default  |            11 |        10 |           -1 |             |
 C        |            11 |        10 |           -1 | C           | C
 POSIX    |            11 |        10 |           -1 | …
Run Code Online (Sandbox Code Playgroud)

postgresql collation pattern-matching encoding case-sensitive

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

如何在 Oracle 的 TO_DATE 调用中正确使用时区格式说明符

我正在尝试DATE使用以下语句获取对象:

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS TZR')
Run Code Online (Sandbox Code Playgroud)

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD TZH:TZM:SS TZR')
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,它都告诉我:ORA-01821: date format not recognized.

TZRhttps://www.techonthenet.com/oracle/functions/to_date.php得到了格式说明符,即:

TZD 夏令时信息。例如,“太平洋标准时间”
TZH 时区小时。
TZM 时区分钟。
TZR 时区区域。

用时区指定日期/时间的正确方法是什么?

oracle date-format date

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