在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 是否为SEQUENCE
s提供了强排序约束?或者微软一般不认为它很重要?
我使用以下命令重命名了一个序列:
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
序列的属性仍然设置为旧名称。我如何在这里更改名称?
我有下表定义:
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) 我想要 PostgreSQL 数据库中表中的一列(我使用的是 9.6 版)。我知道UTF8_UNICODE_CI
MySQL上的排序规则,所以我尝试了:
CREATE TABLE thing (
id BIGINT PRIMARY KEY
,name VARCHAR(120) NOT NULL COLLATE "UTF8_UNICODE_CI"
);
Run Code Online (Sandbox Code Playgroud)
但我得到:
Run Code Online (Sandbox Code Playgroud)ERROR: collation "UTF8_UNICODE_CI" for encoding "UTF8" does not exist
环顾四周,我发现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
我正在尝试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
.
我TZR
从https://www.techonthenet.com/oracle/functions/to_date.php得到了格式说明符,即:
TZD 夏令时信息。例如,“太平洋标准时间” TZH 时区小时。 TZM 时区分钟。 TZR 时区区域。
用时区指定日期/时间的正确方法是什么?
postgresql ×2
collation ×1
date ×1
date-format ×1
encoding ×1
foreign-key ×1
mariadb ×1
mysql ×1
oracle ×1
sequence ×1
sql-server ×1