Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
aacd5d9c
提交
aacd5d9c
authored
6 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Standard no-arg datetime value functions don't have parentheses
上级
4be14cbf
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
108 行增加
和
90 行删除
+108
-90
help.csv
h2/src/docsrc/help/help.csv
+12
-8
Function.java
h2/src/main/org/h2/expression/Function.java
+77
-73
FunctionInfo.java
h2/src/main/org/h2/expression/FunctionInfo.java
+12
-2
FunctionsMySQL.java
h2/src/main/org/h2/mode/FunctionsMySQL.java
+3
-3
default-and-on_update.sql
h2/src/test/org/h2/test/scripts/default-and-on_update.sql
+4
-4
没有找到文件。
h2/src/docsrc/help/help.csv
浏览文件 @
aacd5d9c
...
...
@@ -4493,17 +4493,17 @@ CALL TRANSLATE('Hello world', 'eo', 'EO')
"
"Functions (Time and Date)","CURRENT_DATE","
{ CURRENT_DATE
[ () ]
| CURDATE() | SYSDATE | TODAY }
{ CURRENT_DATE | CURDATE() | SYSDATE | TODAY }
","
Returns the current date.
These methods always return the same value within a transaction (default)
or within a command depending on database mode.
","
CURRENT_DATE
()
CURRENT_DATE
"
"Functions (Time and Date)","CURRENT_TIME","
{ CURRENT_TIME [ (
[ int ] ) ] | LOCALTIME [ ( [ int ] ) ] | CURTIME(
) }
{ CURRENT_TIME [ (
int) ] | LOCALTIME [ (int) ] | CURTIME([ int ]
) }
","
Returns the current time.
If fractional seconds precision is specified it should be from 0 to 9, 0 is default.
...
...
@@ -4513,11 +4513,13 @@ Higher precision is not available before Java 9.
These methods always return the same value within a transaction (default)
or within a command depending on database mode.
","
CURRENT_TIME()
CURRENT_TIME
LOCALTIME
LOCALTIME(9)
"
"Functions (Time and Date)","CURRENT_TIMESTAMP","
CURRENT_TIMESTAMP [ (
[ int ]
) ]
CURRENT_TIMESTAMP [ (
int
) ]
","
Returns the current timestamp with time zone.
Time zone offset is set to a current time zone offset
...
...
@@ -4528,11 +4530,12 @@ Higher precision is not available before Java 9.
This method always returns the same value within a transaction (default)
or within a command depending on database mode.
","
CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(9)
"
"Functions (Time and Date)","LOCALTIMESTAMP","
{ LOCALTIMESTAMP [ (
[ int ]
) ] | NOW( [ int ] ) }
{ LOCALTIMESTAMP [ (
int
) ] | NOW( [ int ] ) }
","
Returns the current timestamp.
If fractional seconds precision is specified it should be from 0 to 9, 6 is default.
...
...
@@ -4542,7 +4545,8 @@ Higher precision is not available before Java 9.
These methods always return the same value within a transaction (default)
or within a command depending on database mode.
","
LOCALTIMESTAMP()
LOCALTIMESTAMP
LOCALTIMESTAMP(9)
"
"Functions (Time and Date)","DATEADD","
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/Function.java
浏览文件 @
aacd5d9c
...
...
@@ -99,14 +99,14 @@ public class Function extends Expression implements FunctionCall {
LPAD
=
91
,
CONCAT_WS
=
92
,
TO_CHAR
=
93
,
TRANSLATE
=
94
,
/* 95 */
TO_DATE
=
96
,
TO_TIMESTAMP
=
97
,
ADD_MONTHS
=
98
,
TO_TIMESTAMP_TZ
=
99
;
public
static
final
int
CUR
DATE
=
100
,
CURTIME
=
101
,
DATE_ADD
=
102
,
DATE_DIFF
=
103
,
DAY_NAME
=
104
,
DAY_OF_MONTH
=
105
,
DA
Y_OF_WEEK
=
106
,
DAY_OF_YEAR
=
107
,
HOUR
=
108
,
MINUTE
=
109
,
MONTH
=
110
,
MONTH_NAME
=
111
,
LOCALTIMESTAMP
=
112
,
QUARTER
=
113
,
SECOND
=
114
,
WEEK
=
115
,
YEAR
=
116
,
CURRENT_DATE
=
117
,
CURRENT_TIME
=
118
,
CURRENT_TIMESTAMP
=
119
,
EXTRACT
=
120
,
FORMATDATETIME
=
12
1
,
PARSEDATETIME
=
122
,
ISO_YEAR
=
123
,
ISO_WEEK
=
12
4
,
ISO_DAY_OF_WEEK
=
125
,
DATE_TRUNC
=
132
;
public
static
final
int
CUR
RENT_DATE
=
100
,
CURRENT_TIME
=
101
,
LOCALTIME
=
102
,
CURRENT_TIMESTAMP
=
103
,
LOCALTIMESTAMP
=
104
,
DA
TE_ADD
=
105
,
DATE_DIFF
=
106
,
DAY_NAME
=
107
,
DAY_OF_MONTH
=
108
,
DAY_OF_WEEK
=
109
,
DAY_OF_YEAR
=
110
,
HOUR
=
111
,
MINUTE
=
112
,
MONTH
=
113
,
MONTH_NAME
=
114
,
QUARTER
=
115
,
SECOND
=
116
,
WEEK
=
117
,
YEAR
=
118
,
EXTRACT
=
119
,
FORMATDATETIME
=
12
0
,
PARSEDATETIME
=
121
,
ISO_YEAR
=
122
,
ISO_WEEK
=
12
3
,
ISO_DAY_OF_WEEK
=
124
,
DATE_TRUNC
=
125
;
/**
* Pseudo functions for DATEADD, DATEDIFF, and EXTRACT.
...
...
@@ -284,34 +284,27 @@ public class Function extends Expression implements FunctionCall {
addFunction
(
"REGEXP_LIKE"
,
REGEXP_LIKE
,
VAR_ARGS
,
Value
.
BOOLEAN
);
// date
addFunctionNotDeterministic
(
"CURRENT_DATE"
,
CURRENT_DATE
,
0
,
Value
.
DATE
);
addFunctionNotDeterministic
(
"CURDATE"
,
CURDATE
,
0
,
Value
.
DATE
);
addFunctionNotDeterministic
(
"TODAY"
,
CURRENT_DATE
,
0
,
Value
.
DATE
);
addFunctionNotDeterministic
(
"CURRENT_DATE"
,
CURRENT_DATE
,
0
,
Value
.
DATE
,
false
);
addFunctionNotDeterministic
(
"CURDATE"
,
CURRENT_DATE
,
0
,
Value
.
DATE
);
addFunctionNotDeterministic
(
"SYSDATE"
,
CURRENT_DATE
,
0
,
Value
.
DATE
,
false
);
addFunctionNotDeterministic
(
"TODAY"
,
CURRENT_DATE
,
0
,
Value
.
DATE
,
false
);
addFunctionNotDeterministic
(
"CURRENT_TIME"
,
CURRENT_TIME
,
VAR_ARGS
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"LOCALTIME"
,
LOCALTIME
,
VAR_ARGS
,
Value
.
TIME
,
false
);
addFunctionNotDeterministic
(
"SYSTIME"
,
LOCALTIME
,
0
,
Value
.
TIME
,
false
);
addFunctionNotDeterministic
(
"CURTIME"
,
LOCALTIME
,
VAR_ARGS
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"CURRENT_TIMESTAMP"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
,
false
);
addFunctionNotDeterministic
(
"SYSTIMESTAMP"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
,
false
);
addFunctionNotDeterministic
(
"LOCALTIMESTAMP"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
,
false
);
addFunctionNotDeterministic
(
"NOW"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunction
(
"TO_DATE"
,
TO_DATE
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunction
(
"TO_TIMESTAMP"
,
TO_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunction
(
"ADD_MONTHS"
,
ADD_MONTHS
,
2
,
Value
.
TIMESTAMP
);
addFunction
(
"TO_TIMESTAMP_TZ"
,
TO_TIMESTAMP_TZ
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"CURRENT_TIME"
,
CURRENT_TIME
,
VAR_ARGS
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"LOCALTIME"
,
CURRENT_TIME
,
VAR_ARGS
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"SYSTIME"
,
CURRENT_TIME
,
0
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"CURTIME"
,
CURTIME
,
0
,
Value
.
TIME
);
addFunctionNotDeterministic
(
"CURRENT_TIMESTAMP"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"SYSDATE"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"SYSTIMESTAMP"
,
CURRENT_TIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP_TZ
);
addFunctionNotDeterministic
(
"LOCALTIMESTAMP"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunctionNotDeterministic
(
"NOW"
,
LOCALTIMESTAMP
,
VAR_ARGS
,
Value
.
TIMESTAMP
);
addFunction
(
"DATEADD"
,
DATE_ADD
,
3
,
Value
.
TIMESTAMP
);
addFunction
(
"TIMESTAMPADD"
,
DATE_ADD
,
...
...
@@ -422,9 +415,9 @@ public class Function extends Expression implements FunctionCall {
2
,
Value
.
NULL
);
addFunctionWithNull
(
"ARRAY_CONTAINS"
,
ARRAY_CONTAINS
,
2
,
Value
.
BOOLEAN
);
addFunction
(
"CSVREAD"
,
CSVREAD
,
VAR_ARGS
,
Value
.
RESULT_SET
,
false
,
false
,
false
);
VAR_ARGS
,
Value
.
RESULT_SET
,
false
,
false
,
false
,
true
);
addFunction
(
"CSVWRITE"
,
CSVWRITE
,
VAR_ARGS
,
Value
.
INT
,
false
,
false
,
true
);
VAR_ARGS
,
Value
.
INT
,
false
,
false
,
true
,
true
);
addFunctionNotDeterministic
(
"MEMORY_FREE"
,
MEMORY_FREE
,
0
,
Value
.
INT
);
addFunctionNotDeterministic
(
"MEMORY_USED"
,
MEMORY_USED
,
...
...
@@ -446,11 +439,11 @@ public class Function extends Expression implements FunctionCall {
addFunctionNotDeterministic
(
"CANCEL_SESSION"
,
CANCEL_SESSION
,
1
,
Value
.
BOOLEAN
);
addFunction
(
"SET"
,
SET
,
2
,
Value
.
NULL
,
false
,
false
,
true
);
2
,
Value
.
NULL
,
false
,
false
,
true
,
true
);
addFunction
(
"FILE_READ"
,
FILE_READ
,
VAR_ARGS
,
Value
.
NULL
,
false
,
false
,
true
);
VAR_ARGS
,
Value
.
NULL
,
false
,
false
,
true
,
true
);
addFunction
(
"FILE_WRITE"
,
FILE_WRITE
,
2
,
Value
.
LONG
,
false
,
false
,
true
);
2
,
Value
.
LONG
,
false
,
false
,
true
,
true
);
addFunctionNotDeterministic
(
"TRANSACTION_ID"
,
TRANSACTION_ID
,
0
,
Value
.
STRING
);
addFunctionWithNull
(
"DECODE"
,
DECODE
,
...
...
@@ -468,7 +461,7 @@ public class Function extends Expression implements FunctionCall {
VAR_ARGS
,
Value
.
RESULT_SET
);
// ON DUPLICATE KEY VALUES function
addFunction
(
"VALUES"
,
VALUES
,
1
,
Value
.
NULL
,
false
,
true
,
false
);
addFunction
(
"VALUES"
,
VALUES
,
1
,
Value
.
NULL
,
false
,
true
,
false
,
true
);
}
/**
...
...
@@ -489,24 +482,29 @@ public class Function extends Expression implements FunctionCall {
private
static
void
addFunction
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
,
boolean
nullIfParameterIsNull
,
boolean
deterministic
,
boolean
bufferResultSetToLocalTemp
)
{
boolean
bufferResultSetToLocalTemp
,
boolean
requireParentheses
)
{
FUNCTIONS
.
put
(
name
,
new
FunctionInfo
(
name
,
type
,
parameterCount
,
returnDataType
,
nullIfParameterIsNull
,
deterministic
,
bufferResultSetToLocalTemp
));
deterministic
,
bufferResultSetToLocalTemp
,
requireParentheses
));
}
private
static
void
addFunctionNotDeterministic
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
)
{
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
true
,
false
,
true
);
addFunctionNotDeterministic
(
name
,
type
,
parameterCount
,
returnDataType
,
true
);
}
private
static
void
addFunctionNotDeterministic
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
,
boolean
requireParentheses
)
{
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
true
,
false
,
true
,
requireParentheses
);
}
private
static
void
addFunction
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
)
{
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
true
,
true
,
true
);
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
true
,
true
,
true
,
true
);
}
private
static
void
addFunctionWithNull
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
)
{
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
false
,
true
,
true
);
addFunction
(
name
,
type
,
parameterCount
,
returnDataType
,
false
,
true
,
true
,
true
);
}
/**
...
...
@@ -801,6 +799,32 @@ public class Function extends Expression implements FunctionCall {
result
=
ValueString
.
get
(
StringUtils
.
xmlStartDoc
(),
database
.
getMode
().
treatEmptyStringsAsNull
);
break
;
case
CURRENT_DATE:
{
result
=
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
DATE
);
break
;
}
case
CURRENT_TIME:
case
LOCALTIME:
{
ValueTime
vt
=
(
ValueTime
)
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
TIME
);
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
0
:
v0
.
getInt
());
break
;
}
case
CURRENT_TIMESTAMP:
{
ValueTimestampTimeZone
vt
=
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
();
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
6
:
v0
.
getInt
());
break
;
}
case
LOCALTIMESTAMP:
{
Value
vt
=
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
TIMESTAMP
);
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
6
:
v0
.
getInt
());
break
;
}
case
DAY_NAME:
{
int
dayOfWeek
=
DateTimeUtils
.
getSundayDayOfWeek
(
DateTimeUtils
.
dateAndTimeFromValue
(
v0
)[
0
]);
result
=
ValueString
.
get
(
DateTimeFunctions
.
getMonthsAndWeeks
(
1
)[
dayOfWeek
],
...
...
@@ -828,33 +852,6 @@ public class Function extends Expression implements FunctionCall {
database
.
getMode
().
treatEmptyStringsAsNull
);
break
;
}
case
CURDATE:
case
CURRENT_DATE:
{
result
=
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
DATE
);
break
;
}
case
CURTIME:
case
CURRENT_TIME:
{
ValueTime
vt
=
(
ValueTime
)
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
TIME
);
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
0
:
v0
.
getInt
());
break
;
}
case
LOCALTIMESTAMP:
{
Value
vt
=
(
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
()).
convertTo
(
Value
.
TIMESTAMP
);
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
6
:
v0
.
getInt
());
break
;
}
case
CURRENT_TIMESTAMP:
{
ValueTimestampTimeZone
vt
=
database
.
getMode
().
dateTimeValueWithinTransaction
?
session
.
getTransactionStart
()
:
session
.
getCurrentCommandStart
();
result
=
vt
.
convertScale
(
false
,
v0
==
null
?
6
:
v0
.
getInt
());
break
;
}
case
DATABASE:
result
=
ValueString
.
get
(
database
.
getShortName
(),
database
.
getMode
().
treatEmptyStringsAsNull
);
...
...
@@ -2089,9 +2086,10 @@ public class Function extends Expression implements FunctionCall {
case
GREATEST:
min
=
1
;
break
;
case
LOCALTIMESTAMP:
case
CURRENT_TIME:
case
LOCALTIME:
case
CURRENT_TIMESTAMP:
case
LOCALTIMESTAMP:
case
RAND:
max
=
1
;
break
;
...
...
@@ -2600,7 +2598,10 @@ public class Function extends Expression implements FunctionCall {
}
return
builder
.
append
(
" END"
);
}
boolean
addParentheses
=
args
.
length
>
0
||
info
.
requireParentheses
;
if
(
addParentheses
)
{
builder
.
append
(
'('
);
}
switch
(
info
.
type
)
{
case
CAST:
{
args
[
0
].
getSQL
(
builder
).
append
(
" AS "
).
...
...
@@ -2630,7 +2631,10 @@ public class Function extends Expression implements FunctionCall {
default
:
writeExpressions
(
builder
,
args
);
}
return
builder
.
append
(
')'
);
if
(
addParentheses
)
{
builder
.
append
(
')'
);
}
return
builder
;
}
@Override
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/FunctionInfo.java
浏览文件 @
aacd5d9c
...
...
@@ -45,6 +45,11 @@ public final class FunctionInfo {
*/
final
boolean
bufferResultSetToLocalTemp
;
/**
* Should the no-arg function require parentheses.
*/
final
boolean
requireParentheses
;
/**
* Creates new instance of built-in function information.
*
...
...
@@ -65,9 +70,11 @@ public final class FunctionInfo {
* @param bufferResultSetToLocalTemp
* should the return value ResultSet be buffered in a local
* temporary file?
* @param requireParentheses
* should the no-arg function require parentheses
*/
public
FunctionInfo
(
String
name
,
int
type
,
int
parameterCount
,
int
returnDataType
,
boolean
nullIfParameterIsNull
,
boolean
deterministic
,
boolean
bufferResultSetToLocalTemp
)
{
boolean
deterministic
,
boolean
bufferResultSetToLocalTemp
,
boolean
requireParentheses
)
{
this
.
name
=
name
;
this
.
type
=
type
;
this
.
parameterCount
=
parameterCount
;
...
...
@@ -75,10 +82,12 @@ public final class FunctionInfo {
this
.
nullIfParameterIsNull
=
nullIfParameterIsNull
;
this
.
deterministic
=
deterministic
;
this
.
bufferResultSetToLocalTemp
=
bufferResultSetToLocalTemp
;
this
.
requireParentheses
=
requireParentheses
;
}
/**
* Creates a copy of built-in function information with a different name.
* Creates a copy of built-in function information with a different name. A
* copy will require parentheses.
*
* @param source
* the source information
...
...
@@ -93,6 +102,7 @@ public final class FunctionInfo {
nullIfParameterIsNull
=
source
.
nullIfParameterIsNull
;
deterministic
=
source
.
deterministic
;
bufferResultSetToLocalTemp
=
source
.
bufferResultSetToLocalTemp
;
requireParentheses
=
true
;
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mode/FunctionsMySQL.java
浏览文件 @
aacd5d9c
...
...
@@ -38,11 +38,11 @@ public class FunctionsMySQL extends FunctionsBase {
static
{
FUNCTIONS
.
put
(
"UNIX_TIMESTAMP"
,
new
FunctionInfo
(
"UNIX_TIMESTAMP"
,
UNIX_TIMESTAMP
,
VAR_ARGS
,
Value
.
INT
,
false
,
false
,
false
));
VAR_ARGS
,
Value
.
INT
,
false
,
false
,
false
,
true
));
FUNCTIONS
.
put
(
"FROM_UNIXTIME"
,
new
FunctionInfo
(
"FROM_UNIXTIME"
,
FROM_UNIXTIME
,
VAR_ARGS
,
Value
.
STRING
,
false
,
true
,
false
));
VAR_ARGS
,
Value
.
STRING
,
false
,
true
,
false
,
true
));
FUNCTIONS
.
put
(
"DATE"
,
new
FunctionInfo
(
"DATE"
,
DATE
,
1
,
Value
.
DATE
,
false
,
true
,
false
));
1
,
Value
.
DATE
,
false
,
true
,
false
,
true
));
}
/**
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/default-and-on_update.sql
浏览文件 @
aacd5d9c
...
...
@@ -88,10 +88,10 @@ ALTER TABLE TEST ALTER COLUMN V SET ON UPDATE NULL;
SELECT
COLUMN_NAME
,
COLUMN_DEFAULT
,
COLUMN_ON_UPDATE
FROM
INFORMATION_SCHEMA
.
COLUMNS
WHERE
TABLE_NAME
=
'TEST'
ORDER
BY
COLUMN_NAME
;
>
COLUMN_NAME
COLUMN_DEFAULT
COLUMN_ON_UPDATE
>
----------- --------------------------- -----------------
--
>
----------- --------------------------- -----------------
>
ID
null
null
>
V
(
NEXT
VALUE
FOR
PUBLIC
.
SEQ
)
NULL
>
V2
null
CURRENT_TIMESTAMP
()
>
V2
null
CURRENT_TIMESTAMP
>
rows
(
ordered
):
3
ALTER
TABLE
TEST
ALTER
COLUMN
V
DROP
ON
UPDATE
;
...
...
@@ -99,10 +99,10 @@ ALTER TABLE TEST ALTER COLUMN V DROP ON UPDATE;
SELECT
COLUMN_NAME
,
COLUMN_DEFAULT
,
COLUMN_ON_UPDATE
FROM
INFORMATION_SCHEMA
.
COLUMNS
WHERE
TABLE_NAME
=
'TEST'
ORDER
BY
COLUMN_NAME
;
>
COLUMN_NAME
COLUMN_DEFAULT
COLUMN_ON_UPDATE
>
----------- --------------------------- -----------------
--
>
----------- --------------------------- -----------------
>
ID
null
null
>
V
(
NEXT
VALUE
FOR
PUBLIC
.
SEQ
)
null
>
V2
null
CURRENT_TIMESTAMP
()
>
V2
null
CURRENT_TIMESTAMP
>
rows
(
ordered
):
3
DROP
TABLE
TEST
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论